2013-02-24 17 views
2

當我嘗試以下方法,我得到一個錯誤Python的關鍵字參數引用對方

def test_func(key1=2.7, key2=key1*3.5): 
    print(key1, key2) 

NameError: name 'key1' is not defined 

我的解決辦法是像

def test_func(key1=2.7, key2=None): 
    if not key2: 
     key2 = key1*3.5 

    print(key1, key2) 

但是這看起來有點醜我。有沒有人有更好的解決方案?

編輯:

所以我最終的解決辦法是

def test_func(key1=2.7, key2=None): 
    if key2 is not None: 
     key2 = key1*3.5 

    print(key1, key2) 

感謝所有答案

+0

也許你甚至應該改變,要明確的是'KEY2不None' ,否則用戶將無法通過'0'作爲第二個參數。 – 2013-02-24 11:05:35

+0

數字只是一個例子,我使用的功能看起來很不一樣,但你是對的。我沒有想到這一點。 – Peter 2013-02-24 11:12:57

回答

0

我的解決辦法是:

def t(key1=1, **kwargs): 
    key2 = kwargs.get('key2', key1*2.7) 

從kwargs獲得KEY2並從它那裏得到的數據與默認鍵1 * 2.7

+0

這樣做的缺點是,如果用戶傳遞一個意外的參數,如'key3',用戶不會得到錯誤。它會默默地忽略它。 – 2013-02-24 11:28:48