Python的特有的參數傳遞(*和**)


python的傳遞方式具有兩種值傳遞和引用傳遞。除此之外,python中還允許包裹方式的參數傳遞,這未不確定參數個數和參數類型的函數調用提供了基礎:

值傳遞

  • int、float等值傳遞
    **特點,區別於C語言參數需要一一對應
    #eg1:
    def f(a,b,c):
        print(a,b,c)
        return
    f(1,2,3)
    f(b=1,a=2,c=3)
    
    上面代碼的運行結果是:
    1 2 3
    2 1 3

引用傳遞

  • 以字典、列表等非值對象數據類型為代表
  • def f(*a,**b)
    *所對應的形參(如上面的a)會被解釋為一個元組(tuple,而**所對應的形參(如上面的b)會被解釋為一個字典。
    #eg2:
    def f(*a,**b):
        print(a)
        print(b)
    
    a=8
    b=4
    f(a,b,m=1,n=2)
    
    上面代碼的運行結果是:
    (8 4)
    {'m': 1, 'n': 2}

可見,對於不使用關鍵字傳遞的變量,會被作為元組的一部分傳遞給*a,而使用關鍵字傳遞的變量作為字典的一部分傳遞給了**b。

python中規定非關鍵字傳遞的變量必須寫在關鍵字傳遞變量的前面,所以混合使用*和**時肯定時*形參在**形參的前面,如def f(*a,**b);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM