是這樣的:返回函數調用?
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