[英]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.