*args、**kwargs用法筆記

*args、**kwargs用法:

使用 *args、**kwargs可以傳遞多個參數

*args、**kwargs在Python中的代碼中經常會見到這兩個詞。 args 和 kwargs,前面通常還會加上一個或者兩個星號。其實這只是編程人員約定的變量名字,args 是 arguments 的縮寫,表示位置參數;kwargs 是 keyword arguments 的縮寫,表示關鍵字參數。這其實就是 Python 中可變參數的兩種形式,並且 *args 必須放在 **kwargs 的前面,因爲位置參數在關鍵字參數的前面。

代碼引用來自於此鏈接:

def test_args(first, *args):
    print("第一個必填參數的值:", first)
    print(type(args))
    for arg in args:
        print("其餘可選參數的值:", arg)


def test_kwargs(first, *args, **kwargs):
    print("第一個必填參數的值:", first)

    print(type(kwargs))
    for arg in args:
        print("其餘可選參數的值: ", arg)

    for k, v in kwargs.items():
        print("可選且指定了名稱的參數:%s=%s" % (k, v))


if __name__ == '__main__':
    test_args(0)
    print()

    test_args(1, 2, 3, 4)
    print()

    test_kwargs(0)
    print()

    # 錯誤使用,第一個參數已指定名稱,無法自定義
    # test_kwargs(k0=1)

    test_kwargs(0, k1=1)
    print()

    test_kwargs(1, 2, 3, 4, k1=5, k2=6)
    print()

    # **將字典展開爲參數
    params = {'a': 11, 'b': 12, 'c': 13}
    test_kwargs(0, **params)

在這裏插入圖片描述
代碼引用自此鏈接:


"""
args: 以元祖的形式存放多個參數
kwargs:以字典的形式傳遞多個參數
"""


def fun1(*args):
    print("args = ", args)  # 存放了所有的參數


def fun2(x, *args):
    print("x = ", x)
    print("args = ", args)  # 存放了除x外所有的參數


def fun3(x, y=1, *args):
    print("x = ", x)
    print("y = ", y)
    print("args = ", args)  # 存放了除x和y外所有的參數


def fun4(x, *args, y=1):
    print("x = ", x)
    print("y = ", y)  # 保持默認值
    print("args = ", args)  # 存放了除參數x外的所有的參數


def fun5(**kwargs):
    print("kwargs = ", kwargs)  # 以字典格式存放了所有的參數


def fun6(x, **kwargs):
    print("x = ", x)
    print("kwargs = ", kwargs)  # 以字典格式存放了除x外所有的參數


def fun7(x=1, **kwargs):
    print("x = ", x)
    print("kwargs = ", kwargs)  # 以字典格式存放了所有的參數


def fun8(x, *args, **kwargs):
    """注意調用順序
    """
    print("x = ", x)
    print("args = ", args)
    print("kwargs = ", kwargs)  # 以字典格式存放了所有的參數


if __name__ == "__main__":
    print("fun1 result:")
    fun1(1, 2, 3, 4, 5)
    print("fun2 result:")
    fun2(1, 2, 3, 4, 5)
    print("fun3 result:")
    fun3(1, 2, 3, 4, 5)
    print("fun4 result:")
    fun4(1, 2, 3, 4, 5)
    print("fun5 result:")
    fun5(x1=1, x2=2, x3=3, x4=4, x5=5)  # 調用時需要指定變量名
    print("fun6 result:")
    fun6(x=1, x2=2, x3=3, x4=4, x5=5)  # 需要給定x的值
    print("fun7 result:")
    fun7(x1=1, x2=2, x3=3, x4=4, x5=5)  # 可以不指定x的值(缺省值)
    print("fun8 result:")
    fun8(1, 2, 3, x1=1, x2=2, x3=3)  # x=1, args=(2,3), kwargs={"x1": 1, "x2": 2, "x3": 3}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章