Python 引數傳遞中的星號

2021-06-01 19:22:47 字數 1012 閱讀 8171

python 支援4種引數傳遞的方式:

1.定義:

f(a,b)

呼叫:

f(1,2)

2.定義:

f(a,b=9)

呼叫:

f(1) 或 f(1,2)  #第二個引數未給出的話,使用預設的值 9 

3.定義:

f(*a)

呼叫:

f(1) 或 f(1,2)或f(1,2,3)

#這種方式可以接收任意多個引數儲存到名為a的元組中,在函式內部可通過a元組訪問這些引數

4.定義:

f(**a)

呼叫:

f(x=1)或f(x=1,y=2)

## 這種方式同樣可以接收任意多個引數,並將引數儲存到名為a的字典中,字典表示為或

上面*號都是出現在函式的定義中

其實*號同樣可以出現在函式的呼叫中,實際效果與在定義中使用剛好相反,下面給出例項**:

#!/usr/bin/env python

def f(a,b):

print a,b

argv = (1,2)

#argv = [1,2]

#argv =

f(*argv)

呼叫 f(*argv),將輸出 1,2

將argv 定義成**中注釋掉的列表,字典仍然有效,且對於字典f(*argv)與f(**argv) 呼叫結果相同

由此我們可以這樣理解:

函式定義中的 * ,用於將多餘的引數合併為乙個元組 (對於 ** 是合併為字典)

函式呼叫中的* ,用於將元組或列表或字典引數,分解為單個的變數值,並做為引數傳遞 (ps:暫時只能這樣表述了 =_=!!)

python關於 星號引數傳遞的問題

通過 傳遞過來的是字典序列,比如 x print x 結果是 沒有出錯 x print x 結果是 也沒有提示出錯 但當以上情況作為 引數傳遞時就會有區別,雖然上面兩種字典序列都是合法的 比如如下 def f d print d 當使用第一種情況時,即這個字典序列 x f x 結果typeerror...

python 函式引數的傳遞 引數帶星號的說明

先看第乙個問題,在python中函式引數的定義主要有四種方式 1.f arg1,arg2,這是最常見的定義方式,乙個函式可以定義任意個引數,每個引數間用逗號分割,用這種方式定義的函式在呼叫的的時候也必須在函式名後的小括號裡提供個數相等的值 實際引數 而且順序必須相同,也就是說在這種呼叫方式中,形參和...

python 函式引數的傳遞 引數帶星號的說明

python中函式引數的傳遞是通過賦值來傳遞的。函式引數的使用又有倆個方面值得注意 1.函式引數是如何定義的 2.在 呼叫函式的過程中引數是如何被解析 先看第乙個問題,在python中函式引數的定義主要有四種方式 1.f arg1,arg2,這 是最常見的定義方式,乙個函式可以定義任意個引數,每個引...