这是:
def outer(x):
def inner():
print x
return inner
>>> outer("foo")()
与此相同:
def outer(x):
def inner():
print x
return inner()
>>> outer("foo")
两者都有效,但是有更多的pythonic方式来写这样的东西吗?
答案 0 :(得分:3)
"更多pythonic"从绝对意义上说,因为你会在不同的情况下使用它们。
如果您要在其他地方生成回调,关闭某些输入(以后要填写其他输入),或者类似的高级用例,则返回稍后要调用的函数是合适的。 / p>
如果您的来电者只对该价值或行动感兴趣,并且您没有任何特殊理由将操作分成几个阶段,则返回值或立即执行副作用是合适的。
答案 1 :(得分:0)
他们是不同的。在您的示例中,第一个将返回一个函数,您可以稍后使用,第二个将返回None类型,因为您只返回任何内容,只需打印x。