Python3基础教程:可变参数和关键字参数
可變參數(*args)
對于可變參數可以聯想到 C# 中的可變參數。可變參數是一個數量不確定的列表集合,可以是 list 類型,也可以是 tuple 類型
我們定義如下代碼段:
def add(*numbers):print(type(numbers))sum = 0for i in numbers:sum += ireturn suma1 = (1, 2, 3, 4,) print(add(*a1))a2 = [1, 2, 3, 4] print(add(*a2))通過運行上述代碼,我們可以看出,無論我們是需要傳遞一個 list 集合還是 tuple 集合,在可變參數對應的函數內部都會作為 tuple 類型來處理。此外,我們還需要注意的是,我們需要傳遞的是集合的指針,而不是該集合對象,這是因為在 python 中,默認通過引用(也就是指針)進行函數的參數傳遞,這樣做避免創建多個拷貝,并且能夠按照方便地更新這些對象。
由于在含可變參數的函數內部,可變參數是作為 tuple 類型來處理的, 因此我們無法對其進行修改。我們可以通過創建一個 list 類型的集合臨時變量,然后通過這個臨時變量實現對傳入的可變參數進行修改。
關鍵字參數(**kwargs)
關鍵字參數是一個由鍵值對組成的集合,允許通過變量名進行匹配,而不是位置。
我們定義如下代碼段:
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' def add(**kwargs):print(type(kwargs))for key in kwargs:kwargs[key] += 1print('{0}:{1}'.format(key,kwargs[key])) dic = {'x': 1, 'y': 2,'z': 3} add(**dic)運行上述代碼,我們可以看出,kwargs 的類型為 dict ,因此我們需要用過 key-value 的方式來進行訪問。當我們訪問的 key 不在該參數列表中程序會發生響應。
綜合運用
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' def test_args_kwargs(arg1, *args, **kwargs):print(arg1)for val in args:print(val)for k, v in kwargs.items():print("{0}:{1}".format(k, v))test_args_kwargs(1, [1, 2, 3], {"a": 1, "b": 2})總結
*args和 **kwargs 并不是 python 中的參數關鍵字,而是一種慣用寫法。
在 python 中,函數參數主要分為:必選參數,默認參數,可變參數,關鍵字參數。必選參數必須賦值;默認參數可賦可不賦,如不賦值則傳遞默認的數值;可變參數傳遞的是一個參數列表,列表中的元素數量不確定;關鍵字參數是一個鍵值對集合,通過鍵值對的方式來進行數值傳遞。它們之間的排列順序為:必選參數 -> 默認參數 -> 可變參數 -> 關鍵字參數。
總結
以上是生活随笔為你收集整理的Python3基础教程:可变参数和关键字参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python基础教程: import与f
- 下一篇: Python3基础教程:元类详解