動態引數
顧名思義,動態引數就是傳入的引數的個數是動態的,可以是1個、2個到任意個,還可以是0個。在不需要的時候,你完全可以忽略動態函式,不用給它傳遞任何值。
python的動態引數有兩種,分別是*args
和**kwargs
,這裡面的關鍵是乙個和兩個星號的區別,而不是args
和kwargs
在名字上的區別,實際上你可以使用*any
或**whatever
的方式。但就如self一樣,預設大家都使用*args
和**kwargs
。
注意:動態引數,必須放在所有的位置引數和預設引數後面!
def func(name, age, ***='male', *args, **kwargs):*argspass
乙個星號表示接收任意個引數。呼叫時,會將實際引數打包成乙個元組傳入形式引數。如果引數是個列表,會將整個列表當做乙個引數傳入。例如:
def func(*args):執行結果:"""*表示接收任意個數量的引數,呼叫時會將實際引數打包為乙個元組傳入實參
:param args:
:return:
"""print args
for i in args:
print i
func(, 123, 'hello', ['a', 'b', 'c'])
(, 123, 'hello', ['a', 'b', 'c'])可以看到,先列印了args引數,是乙個元組,再分別列印了傳入的每個引數。123hello
['a', 'b', 'c']
有時候我們傳入乙個列表,本意是希望將列表中的所有元素都當做引數傳遞進去,這裡直接將['a', 'b', 'c']看做乙個整體了,怎麼辦?
其實只需要在呼叫時前面加乙個*號,就能實現將列表中的每個元素傳遞進去了。
其實不光列表,任何序列型別資料物件,比如字串、元組都可以通過這種方式將內部元素逐一作為引數,傳遞給函式。而字典,則會將所有的key逐一傳遞進去。
def func(*args):輸出結果:"""*表示接收任意個數量的引數,呼叫時會將實際引數打包為乙個元組傳入實參
:param args:
:return:
"""for i in args:
print i
func(*['a', 'b', 'c'])
a特別的,呼叫時只能有乙個引數前新增*號,且必須放在最後面bc
def func(*args):輸出:將字典的key值作為引數傳入了"""*表示接收任意個數量的引數,呼叫時會將實際引數打包為乙個元組傳入實參
:param args:
:return:
"""for i in args:
print i
func(123, 'hello', ['a', 'b', 'c'], *)
123hello
['a', 'b', 'c']
agename
python基礎 可變引數 args
def add args print args add add 1 add 1,2 add 1,2,3 空元組 1 1 2 1,2,3 def add args sum 0 iflen args 0 for i in args sum i print 累加和是 sum else print 沒有元素...
python中args和kwargs引數的使用
在python中,規定了函式中的形參前帶 的,稱為可變位置引數,通常用 args表示。args表示乙個元組,傳入的引數值會被放到這個元組裡面,型別可以是任意的。同理,函式中形參前帶 的,成為可變關鍵字引數,通常用 kwargs表示。表示乙個字典,傳入的引數以鍵值對的形式存放在了字典裡面。下面我們來看...
python不定長引數 args 的用法
gt.csv 301 234 ad bd cd 301 235 a b c 301237 af bf cf 301 239 a2 b2 c2 302 236 a1 b1 c1 303 238 a3 b3 c3 303 2323 a7 b7 c7 304 230 a9 b9 c9 需求 針對gt.cs...