python變長引數列表 可變長引數

2021-10-18 15:06:45 字數 1637 閱讀 3046

## 可變長引數

預設情況下,必須使用正確數量的引數呼叫函式,這意味著,如果您的函式需要2個引數,則必須使用2個引數(不多也不少)來呼叫函式。

示例,該函式需要2個引數,並獲得2個引數:

def my_function(fname, lname):

print(fname + " " + lname)

my_function("emil", "refsnes")

如果嘗試使用1或3個引數呼叫該函式,則會收到錯誤訊息:

def my_function(fname, lname):

print(fname + " " + lname)

my_function("emil")

可變長引數就是向乙個函式傳入不定個數的引數。有時候,你預先不知道函式需要接受多少個實參,好在python函式可以定義可變引數。顧名思義,可變引數就是傳入的引數個數是可變的,可以是1個、2個到任意個,還可以是0個。

python能夠分別接收兩種「可變長引數」的函式:

* 非關鍵字引數`*args`,資料結構為:tuple元組(注:元組不能被修改);

* 關鍵字引數`**kwargs`,資料結構為:dict字典。

## 非關鍵字引數

非關鍵字引數接收的是乙個tuple元組,在python文件中,*任意引數*通常縮寫為`*args`。

如果您不知道將傳遞給您的函式多少個引數,請在函式定義的引數名稱之前新增乙個`*`,這樣,函式將接收乙個引數*元組*,並可以相應地訪問各項。

1、下面的函式只有乙個形參`*args`,但不管呼叫語句提供了多少實參,這個形參都將它們統統收入囊中,

def func(*args):

print(args)

func(10, 20, 30, 40, 50)

示例輸出結果

(10,20, 30, 40, 50)

2、如果要讓函式接受不同型別的實參,必須在函式定義中將接納任意數量實參的形參放在最後。 python先匹配位置實參和關鍵字實參,再將餘下的實參都收集到最後乙個形參中。

def func(a, *args):

print(a)

print(args)

func(10, 20, 30, 40, 50)

示例輸出結果

(20, 30, 40, 50)

基於上述函式定義, python將收到的第乙個值儲存在形參`a`中,並將其他的所有值都儲存在元組`args`中。

3、形參名`*args`中的星號讓python建立乙個名為args的空元組,並將收到的所有值都封裝到這個元組中,即便函式只收到乙個值也如此。

def func(*args):

print(args)

func(10)

示例輸出結果

(10,)

## 關鍵字引數

如果您不知道將傳遞給函式多少個關鍵字引數以及傳遞給函式的會是什麼樣的資訊,請在函式定義中的引數名稱前新增兩個星號`**`。將函式編寫成能夠接受任意數量的鍵值對。這樣,函式將接收引數*字典*,並可以相應地訪問各項。

示例def func(**kwargs):

print(kwargs)

func(x=1,y=2,z=3)

示例輸出結果

在python文件中,*任意kword引數*通常縮短為`** kwargs`。

可變長引數列表 args, kwargs

或者可以叫做,在python中如何使用可變長引數列表 函式定義 這是一種特殊的語法,在函式定義中使用 args和kwargs傳遞可變長引數.args用作傳遞非命名鍵值可變長引數列表 位置引數 kwargs用作傳遞鍵值可變長引數列表 下面的例子傳遞乙個位置引數以及兩個可變長引數 def test va...

Python可變長引數

可變長的引數元組必須在位置和預設引數之後,帶元組 或者非關鍵字可變長引數 的函式普遍的語法如下 def function name formal args,nkwargs function documentation string function body suite星號操作符之後的形參將作為元組...

python可變長引數

程式設計函式時,偶爾會遇到引數數量不確定的時候,這時候就要使用可變引數.在python中,提供了兩種可變引數 在形參名前加乙個 表示接受任意多的引數 def func args print args func func 1 1,func 1,2 1,2 在形參名前加兩個 表示接受任意的關鍵引數 de...