是这样的:返回函数调用?
def outer(x):
def inner():
print x
return inner
>>> outer("foo")()
与此相同:
def outer(x):
def inner():
print x
return inner()
>>> outer("foo")
两个工作,但有写这样的一个更Python的方式?
是这样的:返回函数调用?
def outer(x):
def inner():
print x
return inner
>>> outer("foo")()
与此相同:
def outer(x):
def inner():
print x
return inner()
>>> outer("foo")
两个工作,但有写这样的一个更Python的方式?
也不是绝对的术语“更Python”,因为你会在不同情况下使用它们。
如果您生成的回调要在其他地方连线,关闭某些输入(稍后将填写其他输入)或类似的高级用例,则返回稍后调用的函数是适当的。
返回一个值或立即执行副作用动作是适当的,如果你的听众将只关心该值或动作,和你没有任何特别的理由操作拆分成阶段。
他们是不同的。在你的例子中,第一个将返回一个函数,你可以稍后使用,第二个将返回None类型,因为你什么都没有返回,只是打印x。
他们做不同的事情。第一个返回一个函数,第二个返回'None'。返回函数的函数是具有一阶函数的语言中的常用技巧。而里面一个又一个的功能严格,以帮助外部函数(内部函数)也相当普遍 - 常常以防止命名空间膨胀或澄清程序功能/意图。 – jedwards
@wim,我的意见是不值得一*真正*的答案,但我很欣赏你的关心... – jedwards