例如,我有一個函數對數據做了一些事情,並將一個名稱作爲可選參數。如果名稱未提供,我想調用另一個參數來創建名稱。所以,替代品似乎不是可以/ pythonic將另一個函數作爲可選參數調用嗎?
def do_something(data, name=get_name()):
...
或
def do_something(data, name=None):
if name is None:
name=get_name()
...
第一個似乎更給我,但我失去的東西嗎?
是的:你錯過了'get_name'只會被調用一次的事實。見http://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument –
當然,這可能是你想要的...... –
你可以稍微縮短第二個例子的名字= name或get_name()'。但丹尼爾是對的 - 第一個例子冒着引入非常微妙的錯誤的風險。 – abought