例如,我有一个函数对数据做了一些事情,并将一个名称作为可选参数。如果名称未提供,我想调用另一个参数来创建名称。所以,替代品似乎不是可以/ 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