python - 在 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 运行代码。两者都返回了确切的错误。
解决方案
正如错误所说,您的包装函数不接受任何参数。它需要接受与其包装的函数相同的参数。
def wrapper(arg):
return func(arg).upper()
推荐阅读
- python - 如何使用消息 ID 向消息添加反应
- java - Spark按列分区-内存爆炸
- java - 发布请求Json,代码已完成但不起作用
- go - CLI 输出:在中间杀死进程但不需要输出
- python - 以str的形式导入带有2d int数组的txt文件
- python - 如何用另一个文件 Python 打开一个 Python 文件,这样第一个文件无法通过点击它打开
- javascript - 我如何读取 EC2 实例文件夹中的 CSV 文件,而不是 AWS 中的 S3 存储桶?
- javascript - ReferenceError: 在 babel 编译中没有定义导出
- python - 带@的密码无法连接数据库
- javascript - 如何访问 stenciljs 中的原生 HTML 属性?以及如何使其出现在文档中?