Python开发培训之装饰器培训
是 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 多测师
我是函数的新功能
如需了解更多测试技术信息请关注:http://www.duoceshi.cn/ 深圳市多测师信息技术有限公司
上一篇: 转行学软件测试可不可行?
下一篇: 软件测试之手工测试人员如何转测试开发?