<menu id="ycqsw"></menu><nav id="ycqsw"><code id="ycqsw"></code></nav>
<dd id="ycqsw"><menu id="ycqsw"></menu></dd>
  • <nav id="ycqsw"></nav>
    <menu id="ycqsw"><strong id="ycqsw"></strong></menu>
    <xmp id="ycqsw"><nav id="ycqsw"></nav>
  • python函數參數傳遞列表(python輸入任意多個數求和)


    參數定義(形參):

    1. 位置參數

    • def foo(a, b,):

    2. 可變長位置參數

    • def foo(a, b, *args):

    3. 命名關鍵字參數

    • def foo(a, b, *, c):
    • def foo(a, b, *args, c): (如果已經有*args, 可以不用*分隔, c也已經是”命名關鍵字參數”了)

    使用*號分隔, 后面的形參名c表示: 之后的實參傳遞進來的時候, 必須要使用”c”這個關鍵字傳參

    如: foo(1, 2, *[3, 4, 5], c=6) >> 可正常調用

    foo(1, 2, *[3, 4, 5], b=6) >> 報錯

    用途: 不明(感覺沒啥用啊)

    4. 默認/非默認參數

    • def foo(a, b, *args, c=618, d):
    • def foo(a, b=618, *args, c, d):

    位置: 必須要放在”非默認的位置參數”后 (notice: ‘默認參數b’ 可以放在 “非默認的命名關鍵詞參數c和d” 前 )

    5. 可變長關鍵字參數

    • def foo(a, b, *args, c, d, **kwargs):

    其實**kwargs參數也算是一種”命名關鍵字參數” (它也是必須要以”關鍵字傳參”形式傳入實參)

    參數傳遞(實參):

    1. 位置傳參

    • foo(1, 2, [3, 4, 5], *[6, 7, 8]) >>等價于>> foo(1, 2, [3,4,5], 6, 7, 8)

    2. 關鍵字傳參

    • foo(a=1, b=2, c={“c”:3, “d”:4}, d=**{“e”:5, “f”:6}) >>>> foo(a=1, b=2, c={“c”:3, “d”:4}, e=5, f=6)

    注意:

    傳遞參數時:

    • *: 是對list解包 即:以”位置傳參”的形式傳遞參數
    • **: 是對dict解包 即:以”關鍵字傳參”的形式傳遞參數

    接收參數時(在函數內部使用參數時):

    • *: 是對list打包 即:把多個傳進來的”位置參數”, 收集到一個元祖, 并將這個元祖賦值給args這個變量
    • **: 是對dict打包 即:把多個傳進來的”關鍵字參數”, 收集到一個字典, 并將這個字典賦值給kwargs這個變量

    所以此時:

    args: 其實就是個元祖tuple

    kwargs: 其實就是個字典dict

    def foo(a, b=99, *args, c=618, d, **kwargs):
        print(a) # [0, 1, 2]
        print(b) # 3
        print(args) # (4, 5)
        print(*args) # 4, 5
        print(c) # 6
        print(d) # 7
        print(kwargs) # {"x":88, "y":99}
        # print(**kargs) # 這樣的解包形式會出錯!!
        print(kwargs["y"]) # 99
    
    foo([0, 1, 2], *[3, 4, 5], c=6, d=7, x=88, y=99)
    
    """
    上述案例中:
        1. [0, 1, 2] 就是1個類型為list的位置參數
        2. *[3, 4, 5] 就等價于  3, 4, 5  的位置傳參(傳進3個位置參數)
        3. 當b為"非默認參數"時, a一定不能是"默認參數"
    """

    版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

    發表評論

    登錄后才能評論
    国产精品区一区二区免费