【发布时间】:2015-03-02 08:29:02
【问题描述】:
我有一个函数,它应该有一个可选参数。我希望可选参数与其他参数相同。像这样的:
def foo(arg1, arg2, src, dst=src):
...
...
参数dst是可选的。问题是当调用foo时没有给出dst,它应该和src一样。
有什么想法吗?
谢谢
【问题讨论】:
标签: python default optional-parameters
我有一个函数,它应该有一个可选参数。我希望可选参数与其他参数相同。像这样的:
def foo(arg1, arg2, src, dst=src):
...
...
参数dst是可选的。问题是当调用foo时没有给出dst,它应该和src一样。
有什么想法吗?
谢谢
【问题讨论】:
标签: python default optional-parameters
这个怎么样?
def foo(arg1, arg2, src, dst=None):
dst = dst if dst is not None else src
测试:
>>> def foo(arg1, arg2, src, dst=None):
... dst = dst if dst is not None else src
... print dst
...
>>> foo(0, 0, "test")
test
根据@TanveerAlam 的评论,我不想对您的论点做出假设(如果dst 可以是False 怎么办?),我确实在原始帖子中使用了较短的版本,我会留下它们供参考:
def foo(arg1, arg2, src, dst=None):
dst = dst if dst else src
甚至:
def foo(arg1, arg2, src, dst=None):
dst = dst or src
请注意,这些版本将阻止dst 中的None 以外的值(如False、[] ...)
【讨论】:
dst = dst if dst else src 这也可以工作,因为bool 的值None 是False。
dst = dst or src。更清晰一点,重复更少,并且依赖于与dst if dst else src相同的行为