python函数装饰器
Posted 多测师张sir
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python函数装饰器相关的知识,希望对你有一定的参考价值。
装饰器(Decorators)
是 Python 的一个重要部分。
简单地说:他们是修改其他函数的功能的函数。
他们有助于让我们的代码更简短,也更Pythonic(Python范儿)。
大多数初学者不知道在哪儿使用它们,所以我将要分享下,哪些区域里装饰器可以让你的代码更简洁。
首先,让我们讨论下如何写你自己的装饰器。
这可能是最难掌握的概念之一。
我们会每次只讨论一个步骤,这样你能完全理解它。
1.一切皆对象
def func(name=\'duoceshi\'): return \'hello\' + name print(func()) 输出:hello duoceshi #将函数传递给一个变量 variable = func print(variable) 输出: <function func at 0x000001DD9F7E7048> #函数对象 print(variable()) #带括号打印 输出:hello duoceshi del func print(func) 输出:NameError: name \'func\' is not defined print(variable()) 输出:hello duoceshi
2.在函数中定义函数
def func(): print(\'welcome to 多测师\') def func1(): print(\'welcome to 深圳多测师\') def func2(): print(\'welcome to 广州多测师\') func1() func2() func() 输出: welcome to 多测师 welcome to 深圳多测师 welcome to 广州多测师 #无论何时调用func(),func1()和func2()都会被调用 #func1()与func2()在func()函数外是不会被调用的 func1() 输出:NameError: name \'func1\' is not defined
3.从函数中返回函数
def func(name=\'多测师\'): return \'welcome to 多测师\' def func1(): return \'welcome to 深圳多测师\' def func2(): return \'welcome to 广州多测师\' if name == \'多测师\': return func1 else: return func2 variable = func() print(variable) 输出:<function func.<locals>.func1 at 0x00000157A166CD08> print(variable()) 输出:welcome to 深圳多测师
4.讲函数做为参数传给另一个函数
def func(): return \'welcome to 多测师\' def func1(name): print(\'welcome to 深圳多测师\') print(name()) func1(func) 输出: welcome to 深圳多测师 welcome to 多测师
5.创建一个装饰器
def func(name): def func1(): name() print(\'我是函数的新功能\') return func1 def function(): print(\'welcome to 多测师\') #直接调用第二个函数 # function() #输出: # welcome to 多测师 #传统调用方法 variable = func(function) variable() 输出: welcome to 多测师 我是函数的新功能
6.使用@符调用装饰器
def func(name): def func1(): name() print(\'我是函数的新功能\') return func1 @func def function(): print(\'welcome to 多测师\') function() 输出: welcome to 多测师 我是函数的新功能
以上是关于python函数装饰器的主要内容,如果未能解决你的问题,请参考以下文章