一、錯誤原因
當我們在使用Python編寫程序的過程中,有時候會遇到”Python takes 3 positional arguments but 4 were given”這樣的錯誤提示。
這種錯誤通常發生在函數調用時,它的意思是函數需要3個參數,但是我們傳遞給它的參數卻有4個,導致了錯誤的發生。
二、解決方法
1.檢查函數參數
第一步是檢查函數參數。如果函數需要3個參數,那麼我們必須確保只傳遞了3個參數。我們可以通過查看函數的文檔或者源代碼來確定函數需要哪些參數。
例如,下面是一個需要3個參數的函數:
def add_numbers(a, b, c): return a + b + c
如果我們調用這個函數時,傳遞了4個參數,那麼就會發生”Python takes 3 positional arguments but 4 were given”錯誤:
add_numbers(1, 2, 3, 4)
我們可以把它改為傳遞3個參數:
add_numbers(1, 2, 3)
這樣就不會出現這個錯誤了。
2.檢查函數調用
在某些情況下,我們傳遞給函數的參數可能是由一個函數調用返回的。如果這個函數返回的參數個數不正確,那麼我們就會遇到”Python takes 3 positional arguments but 4 were given”錯誤。
例如,下面的代碼中,函數add_numbers需要3個參數,但是我們調用它時傳遞了一個由函數get_numbers返回的包含4個參數的元組:
def get_numbers(): return (1, 2, 3, 4) add_numbers(get_numbers())
我們可以把它改為只傳遞元組的前3個參數:
add_numbers(*get_numbers()[:3])
這樣就不會出現這個錯誤了。
3.使用關鍵字參數
在Python中,我們還可以使用關鍵字參數來避免”Python takes 3 positional arguments but 4 were given”錯誤。
關鍵字參數是指可以通過參數名來指定參數值的一種方式。例如,下面的代碼中,我們定義了一個函數add_numbers,它需要3個參數,可以通過關鍵字參數來傳遞參數:
def add_numbers(a, b, c): return a + b + c add_numbers(a=1, b=2, c=3)
這樣我們就可以避免傳遞錯誤的參數數量的問題了。
三、結論
“Python takes 3 positional arguments but 4 were given”錯誤通常發生在函數調用時,需要檢查函數參數、函數調用以及使用關鍵字參數來解決這個問題。
正確地傳遞參數是編寫Python程序的基本技能之一。通過理解函數參數和調用的工作原理以及使用關鍵字參數,我們可以避免”Python takes 3 positional arguments but 4 were given”這類錯誤的發生。
原創文章,作者:VWIX,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/131502.html