为什么这个Closure试图用Python工作?

时间:2016-08-17 20:28:10

标签: python-2.7 closures

这会打印出一些内容:

def foo(message):
    print(message)

foo("baba booey")

Python Tutor link

为什么不打印任何内容:

def foo(message):
    def bar():
        print(message)

foo("baba booey")

Python Tutor link

this tutorial,他们都应该工作。

1 个答案:

答案 0 :(得分:1)

您只需在.populate({ path: 'map_data.location', model: 'Location' }) 函数中添加一个return语句即可返回foo函数:

bar

目前,您并未在代码中的任何位置调用def foo(message): def bar(): print(message) return bar #<-- have to return bar function ret = foo("baba booey") #<-- ret is now the bar function ret #<-- again returns the bar function but doesn't execute it ret() #<-- executes the bar function and prints "baba booey" ,即使调用bar也是如此。您可以通过以下方式查看:

foo