2016-01-27 109 views
0

我想用一些可選參數定義一個函數,比如A(強制)和B(可選)。當沒有給出B時,我希望它取得與A相同的值。我怎麼能這樣做?Python可選函數參數默認爲另一個參數的值

我已經試過這一點,但它不工作(名稱「B」沒有定義):

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

我明白的參數值的函數體之前未分配。

回答

2

你應該在你的函數中做這個。

以你原來的功能:

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