装饰器(Decorators)是 Python 的一个重要部分。简单地说:他们是修改其他函数的功能的函数。他们有助于让我们的代码更简短。函数从主代码抽离出来实现复用,把函数里面可复用的部分再抽离出来就要用到装饰器。
*当你把一对小括号放在函数后面,这个函数就会执行;然而如果你不放括号在它后面,那它可以被到处传递,并且可以赋值给别的变量而不去执行它
1.函数是可以嵌套的
# 函数可以嵌套
def one(name=None):
def two():
pass
if name:
return two
return one
b_1 = one()
b_2 = one('1')
print(b_1) #<function one at 0x000001CDEA410E18>
print(b_2) #<function one.<locals>.two at 0x000001CDEA415158>
2.一个函数可以作为参数传入另一个函数中
#函数可以调用
def one(func):
print('开始主函数')
print('------------------')
return func()
def two():
return '被调用函数'
#
a =one(two)
print(a)
输出:
开始主函数
------------------
被调用函数
3.加上装饰器(two函数用one函数来装饰自己)
def one(func):
print('开始主函数')
print('------------------')
return func #加()会报错
@one
def two():
return '被调用函数'
a = two()
print(a)
输出:
开始主函数
------------------
被调用函数