学习装饰器先了解一下知识点
1.先来了解下函数的引用
# 定义函数
def test():
print("test-----")
# 调用函数
test()
# 引用函数
ret = test
print("--------华丽的分割线--------")
print(id(test))
print(id(ret))
# 通引用调用函数
ret()
- 运行结果:
test—–
——–华丽的分割线——–
139750573302648
139750573302648
test—–
由上可知,和变量名一样,函数名只是一个函数代码空间的引用,当函数名赋值给一个对象的时候 就是引用传递,加上括号才能调用这个函数。
- 闭包
# 定义一个函数
def test1(num1):
# 在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包
def test2(num2):
print("num1-----%d" % num1)
return num1 * num2
# 这里返回的就是闭包的结果
return test2
# 分析:当调用test1时只是返回内部函数test2的引用而test2函数并不会被调用,当调用ret时其实调用的是内部函数test2
# 给test函数赋值,这个10就是给参数num1
ret = test1(10)
# 注意这里的20其实给参数num2
result = ret(20)
print(result)
-
运行结果:
num1—–10
200
3.装饰器
python装饰器就是用于拓展原来函数功能的一种函数。
版权声明:本文为Mr_Duanlife原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。