我碰到的東西我不太用在DEF函數的參數是如何工作的理解:默認值[異常]:爲功能參數
即:
def test(a=1, b=9, c='what'):
return a
test(a,b,c)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-295-937fe43dbbd5> in <module>()
2 return a
3
----> 4 test(a,b,c)
NameError: name 'a' is not defined
和
def test(a=1, b=9, c='what'):
return a
test('what')
Output: 'what'
那麼,我期待設置參數a,b作爲默認值。現在,對於第一個示例,如果我調用test(a,b,c),它表示a沒有定義。但是,我已經在函數參數中「定義」了它?這意味着,如果我們說a,b和c是默認參數,我不能執行測試(a,b,c)?只有test()有效嗎?什麼!
在例2中,我甚至不知道了......
謝謝你的洞察力。那麼,當他們說'默認參數'時,這意味着什麼呢?這是否意味着我必須將a,b,c聲明爲全局變量而不是在函數中分配= 1,b = 9,c ='whatever'? – misheekoh
@misheekoh不完全。我會加上我的回答來解釋那部分。 – idjaw
您可能想嘗試使用Google搜索「範圍解析」。簡而言之,當你輸入一個函數時,你輸入一個新的作用域,其中a,b和c由於缺省參數而被定義。當你調用這個函數時,你不在那個範圍內,這些變量還不存在。 –