您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關(guān)python傳入不定參數(shù)指的是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
python中允許自定義函數(shù),自定義的函數(shù),可以傳入固定的參數(shù)和不確定的參數(shù),下面具體分析一下。
如何理解python不定長參數(shù)?*args 和 **kwargs 是什么意思?為什么要使用它們?下面我們來說一下這個問題。
1、函數(shù)參數(shù)可為分如下幾種:必選參數(shù)、默認參數(shù)、可變參數(shù)、命名關(guān)鍵字參數(shù)和關(guān)鍵字參數(shù) 。
2、當我們在定義和調(diào)用一個函數(shù)時,如果包含所有的參數(shù)類型,則必須按照:必選參數(shù)、默認參數(shù)、可變參數(shù)、命名關(guān)鍵字參數(shù)和關(guān)鍵字參數(shù)的順序。但是在實際開發(fā)中,不建議包含過多的參數(shù)類型,會影響代碼的可讀性 。
3、必選參數(shù)很簡單,就是函數(shù)中必須要接受的參數(shù)。
4、默認參數(shù),即給參數(shù)賦一個默認值,我們在傳遞時,可省略對該參數(shù)的傳值操作。
推薦學習《python教程》
如:
def print_test(title, msg="world"): print(title, msg) print_test("hello") # hello world print_test("hello", "demon") # hello demon print_test("hello", msg="demon") # hello demon # 錯誤調(diào)用示例 # print_test( msg="demon","hello") # 這樣是不對的
5、可變參數(shù),在定義函數(shù)時用 *args 來接受,其中 * 是規(guī)定的,args可用其他名稱替換,但一般習慣用 args 來表示??勺儏?shù)在傳入函數(shù)后,被封裝成一個 tuple 來進行使用。所以我們在函數(shù)內(nèi)部,可以通過操作 tuple 的方法來操作參數(shù),示例如下:
def print_numbers(*args): print(type(args)) # tuple for n in args: print(type(n)) # int print_numbers(1, 2, 3, 4)
6、如果在函數(shù)外已經(jīng)得到一個 list 或者 tuple,想調(diào)用一個可變參數(shù),也可以用 *+變量名 的形式進行調(diào)用,(這種用法有點類似 C語言 中的指針),示例如下:
def print_numbers(*args): print(type(args)) # tuple for n in args: print(type(n)) # int l = [1, 2, 3, 4] print_numbers(*l) # *l,等價于 print_numbers(1, 2, 3, 4) print_numbers(l) # 將 l 作為一個整體傳入,這樣函數(shù)接受到的其實只有一個參數(shù),且參數(shù)類型為 list
7、關(guān)鍵字參數(shù)使用 kwargs 來標識,是規(guī)定,而kwargs可替換,它將不定長參數(shù)轉(zhuǎn)換為 dict 傳入函數(shù)。它用于擴展函數(shù)的功能。比如我們要實現(xiàn)用戶注冊,有必輸項和非必輸項,這些非必輸項就可以用關(guān)鍵字參數(shù)來接受。示例如下:
def register(name, email, **kwargs): print('name:%s, age:%s, others:%s', (name, email, kw)) register("demon", "1@1.com") # name:%s, age:%s, others:%s ('demon', '1@1.com', {}) register("demon", "1@1.com", addr="shanghai") # name:%s, age:%s, others:%s ('demon', '1@1.com', {'addr': 'shanghai'})
關(guān)于python傳入不定參數(shù)指的是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。