有关装饰器问题
装饰器前面的函数为什么要弄成闭包啊,普通函数也可以实现啊 看起来只是进行了定义,没有调用。 你还没执行被装饰的函数呢{:10_292:}即便如此
def decorator(f):
print("my decorator")
return f
@decorator
def myfunc():
print("my function")
myfunc()
myfunc()
myfunc()
输出是
my decorator
my function
my function
my function
print('my decorator')由于不在return的函数里 只在第一次@的时候执行一次 kogawananari 发表于 2021-1-7 10:22
你还没执行被装饰的函数呢
即便如此
我知道了,如果是闭包的话@后面那个返回的是一个新的空间,而我这么弄,在@定义后已经执行了,再次用test()就会报错,因为test指向了@前面的函数而它需要一个参数 v.ki 发表于 2021-1-7 10:43
我知道了,如果是闭包的话@后面那个返回的是一个新的空间,而我这么弄,在@定义后已经执行了,再次用test ...
def a(x):
def b(y):
return x*y
return b
num = a(1) #此处num 等于个一个方法引用地址
print(num(10))#此处的num(1) 展开转换的是 b(1), 因此a(x)函数中的x,在b(y)中变得可用
页:
[1]