一、什麼是”takes 2 positional arguments but 3 were given”錯誤
“takes 2 positional arguments but 3 were given”是Python函數常見的錯誤之一,它通常在函數調用時出現。具體而言,這個錯誤的含義是傳遞給函數的參數數量不正確。這通常是由於參數個數和函數定義不匹配而引起的。如果函數定義了兩個位置參數,並且在調用時傳遞了三個參數,就會出現這個錯誤。
二、如何解決”takes 2 positional arguments but 3 were given”錯誤
既然這個錯誤是由於參數數量不匹配引起的,那麼解決這個錯誤的最簡單的方法就是確保傳遞給函數的參數數量正確。以下是一些解決”takes 2 positional arguments but 3 were given”錯誤的方法:
1.檢查函數定義
在發生這種錯誤時,第一步應該檢查函數定義。通常這種錯誤是由於函數定義數組參數,但在調用時傳遞了多個參數。如果定義時只有兩個位置參數,而在調用時實際傳遞了三個參數,那麼就會出現這個錯誤。
def sample_function(arg1, arg2): print(arg1, arg2) sample_function('a', 'b', 'c')
上面的代碼定義了一個函數sample_function,它只接收兩個參數。當調用它時傳遞三個參數時,就會出現”takes 2 positional arguments but 3 were given”錯誤。正確寫法應該是:
def sample_function(arg1, arg2): print(arg1, arg2) sample_function('a', 'b')
2.使用默認參數
有時候為了在調用參數時方便,我們可能會定義大量的參數。如果你的函數需要接收許多參數,那麼你可以使用默認參數來簡化代碼。默認參數是指在定義函數時設置的參數值。如果調用函數時不傳遞這個參數,函數會使用默認值。
def sample_function(arg1, arg2, arg3=0): print(arg1, arg2, arg3) sample_function('a', 'b')
如果你在調用這個函數時只傳遞了兩個參數,那麼函數會自動使用默認參數,arg3將被設置為0。
3.使用*args和**kwargs
有時候你可能需要編寫一個接受任意數量參數的函數。在這種情況下,你可以使用*args和**kwargs。*args允許你傳遞任意數量的位置參數,而**kwargs允許你傳遞任意數量的關鍵字參數。
def sample_function(*args): for arg in args: print(arg) sample_function('a', 'b', 'c')
上面的代碼定義了一個函數sample_function,它可以接受任意數量的位置參數。如果你在調用時傳遞了三個參數,sample_function將列印出’a’、’b’和’c’。更複雜的例子如下:
def sample_function(arg1, arg2, *args, **kwargs): print(arg1, arg2) for arg in args: print(arg) for key, value in kwargs.items(): print(key, value) sample_function('a', 'b', 'c', arg4='d', arg5='e')
上面的代碼定義了一個接受兩個位置參數、任意數量的位置參數和關鍵字參數的函數。如果你在調用時傳遞了三個位置參數和兩個關鍵字參數,sample_function將列印出’a’、’b’、’c’、’d’、’e’。
三、總結
在編寫Python函數時,很容易遇到”takes 2 positional arguments but 3 were given”錯誤。通常情況下,這個錯誤是由於函數的參數定義和傳遞的參數數量不匹配引起的。為了解決這個問題,你可以檢查函數定義、使用默認參數和使用*args和**kwargs等方法。
願你的Python程序愉快無阻!
原創文章,作者:EYMT,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/140639.html