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

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

云学编程的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功能 ——d幕(虽然看不懂觉得很厉害的样子)

应用场景:

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. 如果你正在构建的是你要用的功能,不想改变原定义,就可以创建一个装饰器。  

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5593964.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存