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

问题描述 投票:1回答:2

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

我试过这个,但它不起作用(名称'B'未定义):

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

我知道参数的值没有在函数体之前分配。

python python-2.7 default-value optional-arguments
2个回答
4
投票

你应该在你的功能中做到这一点。

采取您的原始功能:

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

尝试类似的东西:

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

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

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


1
投票

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

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

    print 'A = %r' % A
    print 'B = %r' % B
© www.soinside.com 2019 - 2024. All rights reserved.