栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

云学编程的23天—【微软官方python入门教程 P40笔记】2021-11-21 P42-P43装饰器Decorators以及实操

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

云学编程的23天—【微软官方python入门教程 P40笔记】2021-11-21 P42-P43装饰器Decorators以及实操

Programming components

 

Object: Nouns ; Data constructs ; They're the things that we're going to operate upon.

Functions/Methods: Verbs ; Actions ; They're all the different things that we're going to be able to do.

eg: My OS you might consider that an object. getenv that's going to be our verb.

Decorators : Adjectives;  Add additional functionality to code; Common in frameworks

Using a decorator

#Snippet from Flask
#register https://myserver/api/products
@route('api/products') #route registration
def get_products:
    #code to list from database
    pass

使用装饰器@route告诉Flask,当某人访问api/products,这里的代码就是我要调用的。

这就是幕后的样子:

Creating a decorator

def logger(func):
     def wrapper():
          print('Logging execution')#我的code
          func() #你的code
          print('Done logging')#我的code
     return wrapper
@logger。        #如果某人用我们的装饰器,你(python)就调用制定函数wrapper()
def sample():
     print('-- Inside sample function ')
sample()
 

Logging execution
-- Inside sample function #执行func()
Done logging 

#利用注解的形式实现了一个AOP功能 ——弹幕(虽然看不懂觉得很厉害的样子)

应用场景:

If I need to log execution which is what I'm trying to demo here, or maybe there's something where I need to do some level of authentication身份认证, and I need to make sure that the users log on, then I might go ahead and create a Decorator. 

P43实操 

def logger(func):
     def wrapper():
          print('Logging execution')#我的code
          func() #你的code
          print('Done logging')#我的code
     return wrapper
@logger      #如果某人用我们的装饰器,你(python)就调用制定函数wrapper()
def sample():
     print('-- Inside sample function ')
sample()

 def wrapper():
          print('Logging execution')
          func()
          print('Done logging')

⬆️这段代码是装饰器运行时执行的代码

@logger 

⬆️设置名为logger的装饰器

def sample():

⬆️这就是func函数,先print Log...再运行sample函数(这里会运行print('-- Inside sample function ')),最后print Done...

⬇️运行结果: 

Logging execution
-- Inside sample function 
Done logging

If you ever decided that this functionality might work in something that you're building that is how you can go in and create a simple docorator. 如果你正在构建的是你要用的功能,不想改变原定义,就可以创建一个装饰器。  

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/588576.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号