python可选函数参数,默认为另一个参数的值

Python optional function argument to default to another argument's value

我想用一些可选参数定义一个函数,比如a(强制)和b(可选)。如果不给B,我希望它取和A相同的值。我怎么能这样做?

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

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

我知道参数的值不会在函数体之前赋值。


你应该在你的职能范围内这样做。

发挥你原来的功能:

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

尝试以下方法:

1
2
3
4
def foo(A, B=None):
    if B is None:
        B = A
    do_something()

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

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


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

1
2
3
4
5
6
def foo(A, B=None):
    if B is None:
        B = A

    print 'A = %r' % A
    print 'B = %r' % B