在学习装饰器的时候遇到了无法被调用的报错
def yys2(fun):
def yys3(n):
a=[]
for i in range(n):
a.append(i)
fun()
return yys3()
@yys2
def yys1():
print('.21')
yys1()
装饰器中定义了一个列表与循环,但是在进行参数传入的时候发生了这个报错,请问是什么问题呢?
装饰器能将功能传递给函数
两个错误:
1、注意return yys3 前面和def对齐
2、yys1需要参数,要不然yys3得参数哪里来
def yys2(fun):
def yys3(n):
a=[]
for i in range(n):
a.append(i)
fun()
return yys3
@yys2
def yys1():
print('.21')
yys1(3)
看看这个:
def yys2(fun):
def yys3(n):
a=[]
for i in range(n):
a.append(i)
fun()
return a
return yys3
@yys2
def yys1():
print('.21')
r = yys1(4)
print(r)
这篇文章:python装饰器详解 也许能够解决你的问题,你可以看下