Python 使用参数修饰函数时,参数不能按预期工作
我有一个装饰程序,它必须向字符串添加HTML标记。 如果必须包装一个固定的字符串,则装饰器可以正常工作Python 使用参数修饰函数时,参数不能按预期工作,python,python-decorators,Python,Python Decorators,我有一个装饰程序,它必须向字符串添加HTML标记。 如果必须包装一个固定的字符串,则装饰器可以正常工作 def tagger(fn): def wrapper(*x): return "<strong>" + fn() + "</strong>" return wrapper @tagger def foo(): return 'Hello' print(foo()) 我做错了
def tagger(fn):
def wrapper(*x):
return "<strong>" + fn() + "</strong>"
return wrapper
@tagger
def foo():
return 'Hello'
print(foo())
我做错了什么?您错过了将任何*参数转发到
fn()
呼叫中
def tagger(fn):
def wrapper(*x):
return "<strong>" + fn(*x) + "</strong>" # <-- This will call foo(*x)
return wrapper
@tagger
def foo(x):
return str(x)
print(foo('Hello'))
def标记器(fn):
def包装(*x):
返回“”+fn(*x)+“”#您没有将任何*参数转发到fn()调用中
def tagger(fn):
def wrapper(*x):
return "<strong>" + fn(*x) + "</strong>" # <-- This will call foo(*x)
return wrapper
@tagger
def foo(x):
return str(x)
print(foo('Hello'))
def标记器(fn):
def包装(*x):
返回“”+fn(*x)+“”#您永远不会传递参数。包装器中的表达式fn()
是对原始修饰函数的调用,但不传递参数
装饰器包装器接受任意位置参数作为*x
,将它们传递到fn()
调用:
def tagger(fn):
def wrapper(*x):
return "<strong>" + fn(*x) + "</strong>"
return wrapper
现在,decorator也可以用于接受关键字参数的函数。您永远不会传递参数。包装器中的表达式fn()
是对原始修饰函数的调用,但不传递参数
装饰器包装器接受任意位置参数作为*x
,将它们传递到fn()
调用:
def tagger(fn):
def wrapper(*x):
return "<strong>" + fn(*x) + "</strong>"
return wrapper
现在,decorator也可以用于接受关键字参数的函数。fn()
调用foo()
foo
需要一个参数,但您没有传递一个参数。你是想把*x
传过去吗<代码>fn(*x)
.TNX。我错过了。fn()
调用foo()
foo
需要一个参数,但您没有传递一个参数。你是想把*x
传过去吗<代码>fn(*x)
.TNX。我错过了。