一、 分配引數的定義
引數收集就是在定義函式時不能確認引數個數,用收集引數將呼叫時不確定數量的實參存放到收集引數的元組中。分配引數與此過程相反,它不是在定義函式形參時使用星號(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 ...