python自定義函式中有兩中不定長引數,第一種是*name,第二種是**name。加了星號 * 的引數會以元組(tuple)的形式匯入,存放所有未命名的變數引數。加了兩個星號 ** 的引數會以字典的形式匯入。
第一種形式的不定長引數,在傳入額外的引數時可以不用指明引數名,直接傳入引數值即可,第二種因為返回的是字典,所以傳入時需要指定引數名。
下面是兩個簡單的栗子:
『 *name 』形式:
def funa(a, b, *args):print(a)
print(b)
print(args)
funa(1, 2, 3, 5, 6, 7)
輸出如下:12
(3, 5, 6, 7)
可以看出,前1和2這兩個資料傳給了a和b,而剩下的5,6,7三個數都以元祖的形式存在了args這個引數中,所以在第四行輸出args時,輸出的是個元組,當然也可以像訪問元組那樣輸出args中的某乙個值,如下:
def funa(a, b, *args):print(a)
print(b)
print(args[0])
輸出如下:12
3
這就只輸出了args這個元祖中的第乙個值。
『 **name 』形式:
def funb(a, b, **vardict):print(a)
print(b)
print(vardict)
print(vardict['l'])
funb(1, 2, l=3, m=4)
輸出結果如下:12
3
可以看出,前1和2這兩個資料傳給了a和b,而 l 和 m 這兩個引數被以字典的形式存在的vardict中,所以第四行輸出的是乙個字典,第五行只輸出了vardict這個字典中的乙個值。
個人覺得第二種形式要比第一種形式更好用。想象一下這個場景,在填寫資料時,有些選項不是必填項,那麼怎麼判斷使用者有沒有填寫呢?這個時候這種形式的不定長引數就發揮作用了。
python基礎之不定長引數
例1 def test a,b,c 10,args 預設引數c,要放在a,b的後面 print a s a print b s b print c s c print args for each in args print each test 1,2,3,44,55,66,77,88 1傳給a,2傳...
Python不定長引數
記錄了python函式的不定長引數,用 來接收不定長的資料。在定義函式時,可以在形參前邊加上乙個 這樣這個形參將會獲取到所有的實參,它將會將所有的實參儲存到乙個元組中 a會接受所有的位置實參,並且會將這些實參統一儲存到乙個元組中 裝包 fn3函式的使用 形參可以接收其他的關鍵字引數,它會將這些引數統...
不定長引數 python
如果向乙個函式傳遞的引數的數量每次都不同,想要讓函式去做每次相加或者其他的事的時候,可以用 變數名 傳遞不定長引數,傳進去以後的變數會變成乙個元組def sum a result 0print type a for i in a result i return result result sum 1...