【问题标题】:Python - how to set default parameter equal to another parameterPython - 如何设置默认参数等于另一个参数
【发布时间】:2015-03-02 08:29:02
【问题描述】:

我有一个函数,它应该有一个可选参数。我希望可选参数与其他参数相同。像这样的:

def foo(arg1, arg2, src, dst=src):
  ...
  ...

参数dst是可选的。问题是当调用foo时没有给出dst,它应该和src一样。

有什么想法吗?

谢谢

【问题讨论】:

    标签: python default optional-parameters


    【解决方案1】:

    这个怎么样?

    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 的值NoneFalse
    • 我更喜欢dst = dst or src。更清晰一点,重复更少,并且依赖于与dst if dst else src相同的行为
    猜你喜欢
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 2017-02-03
    • 2015-11-05
    • 1970-01-01
    • 2015-03-30
    • 2015-02-19
    相关资源
    最近更新 更多