首页 > 解决方案 > 在 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 运行代码。两者都返回了确切的错误。

标签: pythondecoratorpython-decorators

解决方案


正如错误所说,您的包装函数不接受任何参数。它需要接受与其包装的函数相同的参数。

def wrapper(arg):
    return func(arg).upper()

推荐阅读