第5 3節 詳說Python風格的函式分配引數

2021-09-25 03:42:46 字數 2732 閱讀 1696

一、 分配引數的定義

引數收集就是在定義函式時不能確認引數個數,用收集引數將呼叫時不確定數量的實參存放到收集引數的元組中。分配引數與此過程相反,它不是在定義函式形參時使用星號(1個或2個),而是在呼叫函式傳遞實參時使用星號(1個或2個)來傳遞多個引數。

二、 分配引數的使用

使用1個星號的分配引數

使用1個星號的實參時,實參為乙個元組、列表、字典或集合,該實參內的元素將按引數順序傳遞給函式,但由於字典實際傳值取的是鍵,集合的元素沒有順序,因此不建議使用字典和集合傳值。

舉例:

def cal(calmethod,number1,number2,*numbers):

print(『number1=』,number1,』,number2=』,number2,』,numbers=』,numbers,』, calmethod=』,calmethod)

paras=(』+』,1,2,3,4) #元組分配引數傳值

cal(*pars)

number1= 1 ,number2= 2 ,numbers= (3, 4) , calmethod= +

paras=[』+』,1,2,3,4]

cal(*paras) #列表分配引數傳值

number1= 1 ,number2= 2 ,numbers= (3, 4) , calmethod= +

paras=

cal(*paras) #集合分配引數傳值,順序變化了

number1= 2 ,number2= 3 ,numbers= (4, 『+』) , calmethod= 1

paras=

cal(*paras) #字典分配引數傳值,取的是鍵作為引數

number1= 1 ,number2= 2 ,numbers= (3, 4) , calmethod= +

從上面的例子可以看出,乙個星號的收集引數可以通過1個星號的分配引數方式傳值。

老猿認為,分配引數實際上就是將實參傳遞的序列資料解包給對應形參的過程。

使用2個星號的分配引數

使用2個星號的實參時,實參為乙個字典,該字典內的元素將按關鍵字引數模式傳遞給函式,其中的鍵為關鍵字引數,值為關鍵字引數對應的實參值。使用這種模式要求該實參位於引數列表末尾。還是以上面函式為例:

>>> paras=

>>> cal(**paras) #報錯遇到沒有預期的關鍵字引數』numbers』

>>> paras=

>>> cal(**paras) #報錯遇到沒有預期的關鍵字引數』numbers』

>>> paras=

>>> cal(**paras) #報錯遇到沒有預期的關鍵字引數』*numbers』

從上面的案例可以看出來:

兩個星號的引數分配不能給兩個星號的收集引數傳值,因為這沒有意義,還不如直接使用形參為字典型別實參是字典資料進行操作。

分配引數模式和收集引數模式可以並存,如上面的例子,但這種使用方式意義不大,一般不建議使用。

老猿python(系列文章用於逐步介紹老猿學習python後總結的學習經驗,這些經驗有助於沒有接觸過python的程式設計師可以很容易地進入python的世界。

第8 2節 Python類的 init

前面 第8.1節 python類的構造方法 init 深入剖析 語法釋義 一節介紹了構造方法定義的語法,並進行了語法解釋說明,本節將通過案例來說明構造方法引數傳遞及返回值的情況。一 案例說明 本節定義乙個汽車類,它有四個例項變數 wheelcount,power,oilcostperkm,total...

第10 6節 Python包的概念

一 引言 在 第10.2節 python的模組及模組匯入 介紹了模組的概念及匯入的幾個關鍵點,python中的模組是乙個單個的py檔案,當我們開發的專案或功能集由多個檔案構成時,我們需要將這些檔案打包,這樣在外部引用時這些功能集的功能時,這些檔案作為乙個整體來進行管理。二 概念 在python中,乙...

第3 5節 豐富的Python字典操作

二 操作方法 1 建立字典的方法 1 建立空字典的兩種方法 變數 dict 變數 2 從鍵 值對映對建立字典,方法 變數 如 d 3 從以元組作為元素的列表建立字典,元組包含兩個元素,第乙個元素是鍵,第二個是該鍵對應的字典的值,這樣列表中的每個元組對就構成了字典中的鍵 值對,舉例如下 d dict ...