【发布时间】:2021-11-18 17:34:23
【问题描述】:
var = float(input('Enter a number: '))
def math_test(func):
def wrapper(*args, **kwargs):
func(var)
return wrapper
@math_test
def times10(x):
print(x * 10)
times10()
为什么我调用times10()函数时,不需要把参数var放在括号里?
当我没有输入参数 var 时,当我调用 func() 时,我收到一个错误,说需要位置参数 x...所以当我将 var 放入 times10() 时,我得到了同样的错误.
但是,当我将参数放在 func() 中时,它运行良好。
包装函数不应该知道times10() 中的参数,即var,也应该是func() 中的参数吗?
编辑:
var = float(input('Enter a number: '))
def math_test(func):
def wrapper(*args, **kwargs):
func(*args, **kwargs)
return wrapper
@math_test
def times10(x):
print(x * 10)
times10(var)
【问题讨论】:
-
"无法添加图片内联,我没有足够的声誉提前道歉。" - 您应该将代码发布为代码格式的文本,而不是图像。
-
好的。我会尝试编辑它。
-
@user2357112supportsMonica 我修好了。
-
@ddejohn 是如何使主体中的所有代码看起来像这样的?是不是``````
-
从
wrapper返回func(*args, **kwargs),从math_test返回wrapper。