[英]Error using decorator: decorator() takes 1 positional argument but 2 were given
[英]got positional argument error when using decorator in python
我在python中定义了一个装饰器函数,但是在使用它时我得到了位置参数错误。 这是我的代码:
def my_upper_case(func):
def wrapper():
return func().upper()
return wrapper
@my_upper_case
def print_name(name):
return name
if __name__ == "__main__":
print(print_name("zeinab"))
返回错误是:
Traceback (most recent call last):
File "test.py", line 31, in <module>
print(print_name("zeinab"))
TypeError: wrapper() takes no arguments (1 given)
我尝试用python 2.7和python 3.6运行代码。 两者都返回了确切的错
正如错误所说,您的包装函数不接受任何参数。 它需要接受与它包装的函数相同的args。
def wrapper(arg):
return func(arg).upper()
wrapper
包装函数,意味着它将“代替它”。
因此,如果调用print_name("zeinab")
,将使用wrapper("zeinab")
调用wrapper("zeinab")
。
wrapper
器不接受"zeinab"
参数,因为你没有给它任何参数。
def my_upper_case(func):
def wrapper(*args, **kwargs):
return func(*args, **kwargs).upper()
return wrapper
@my_upper_case
def print_name(name):
return name
if __name__ == "__main__":
print(print_name("zeinab"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.