【问题标题】:Python optional function argument to default to another argument's valuePython 可选函数参数默认为另一个参数的值
【发布时间】:2016-05-03 18:37:39
【问题描述】:

我想定义一个带有一些可选参数的函数,比如 A(强制)和 B(可选)。如果没有给出 B,我希望它与 A 具有相同的值。我该怎么做?

我已经尝试过了,但它不起作用(名称“B”未定义):

def foo(A, B=A):
    do_something()

我知道参数的值不是在函数体之前分配的。

【问题讨论】:

    标签: python python-2.7 default-value optional-arguments


    【解决方案1】:

    你应该在你的函数内部做这个。

    采用你原来的功能:

    def foo(A, B=A):
        do_something()
    

    尝试类似:

    def foo(A, B=None):
        if B is None:
            B = A
        do_something()
    

    重要的是,函数参数的函数默认值是在定义函数时给出的。

    当您使用 A 的某个值调用函数时,为时已晚,因为 B 的默认值已经分配并存在于函数定义中。

    【讨论】:

      【解决方案2】:

      你可以这样做。如果B 的值为None,则从A 分配它

      def foo(A, B=None):
          if B is None:
              B = A
      
          print 'A = %r' % A
          print 'B = %r' % B
      

      【讨论】:

        猜你喜欢
        • 2018-01-22
        • 1970-01-01
        • 1970-01-01
        • 2017-02-03
        • 2019-04-14
        • 1970-01-01
        • 2014-10-12
        • 2023-03-11
        • 1970-01-01
        相关资源
        最近更新 更多