【发布时间】:2018-01-21 01:47:57
【问题描述】:
我有这个代码:
def foo(bar):
def test(some_string):
return 'Decorator test: '+bar(some_string)
return test
def main():
print(bar('test1'))
@foo
def bar(some_string):
return some_string[:3]
我知道调用bar('test1) 基本上是调用foo(bar('test1')),但是当我尝试在其他函数之前在foo 中打印some_string 时,我得到some_string is not defined:
def foo(bar):
print(some_string)
def test(some_string):
return 'Decorator test: '+bar(some_string)
return test
-
test怎么知道some_string而foo不知道? - 为什么我必须返回
test才能让装饰器工作?直接返回Decorator test: '+bar(some_string)不起作用,因为some_string未定义。
【问题讨论】:
-
不。这是
foo(bar)('test1')。
标签: python decorator python-decorators