zoukankan      html  css  js  c++  java
  • python学习之装饰器

    我们在日常生活中使用手机时都有如下体验:

    当我需要阅读书籍时,下载一个阅读器,就可以愉快的看书了;

    当我需要看电影时,下载一个视频APP,就可以看电影了;

    ...

    像这样的场景每天都在发生。

    当我们需要某个功能时,下载一个合适的APP即可!

    现在来说说python的装饰器,他就像手机APP一样,当我给某个函数加上特定的装饰器之后,该函数就新增了该装饰器的功能(装饰器的本质也是函数)。就像手机安装了特定的APP一样。

    下面是一个代码示例:

    import logging
    
    def use_logging(func):
    	def wrapper(*args,**kwargs):
    		logging.warn('%s is running...'%func.__name__)
    		return func(*args)
    	return wrapper
    def foo():
    	print('i am foo.')
    @use_logging
    def bar():
    	print('i am bar.')
    bar()
    print('===========================')
    '''
    bar()的效果等效于下面代码
    '''
    a = use_logging(foo) #wrapper的实例对象
    print(a)
    a() #执行wrapper()函数
    

     执行结果:

    WARNING:root:bar is running...
    i am bar.
    ===========================
    <function use_logging.<locals>.wrapper at 0x000000F7833B6158>
    WARNING:root:foo is running...
    i am foo.
    [Finished in 0.1s]

     

  • 相关阅读:
    2020 11 21
    2020 11 20
    2020 11 19
    2020 11 18
    2020 11 17
    2020 11 16
    2020 11 15
    2020 11 14
    2020 11 14
    第五周学习进度报告
  • 原文地址:https://www.cnblogs.com/leomei91/p/7297844.html
Copyright © 2011-2022 走看看