2

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

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

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

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

4

2 回答 2

7

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

采用您的原始功能:

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

尝试类似:

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

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

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

于 2016-01-27T00:37:43.513 回答
1

你可以这样做。如果B有一个值None然后分配它A

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

    print 'A = %r' % A
    print 'B = %r' % B
于 2016-01-27T00:38:00.733 回答