日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python函数传参方式超级大汇总

發布時間:2025/3/20 python 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python函数传参方式超级大汇总 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

位置參數

位置參數傳遞是最為簡單的傳遞方式,按照函數參數的位置順序逐個匹配傳入,傳入參數的個數必須與函數參數個數一致。

見示例1,根據位置順序進行匹配,a,b,c分別賦值為2,3,4

示例1

def func(a,b,c):print("args:",a,b,c)if __name__ == "__main__":func(2,3,4) #輸出結果 args: 2 3 4

關鍵字參數

通過關鍵字對變量進行賦值,可以對全部關鍵字進行賦值,這時候位置可以隨意改變。見示例2,輸出結果與示例1一致。

示例2

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' def func(a,b,c):print("args:",a,b,c)if __name__ == "__main__":func(c=4,a=2,b=3) #輸出結果 args: 2 3 4

也可以對部分關鍵字進行賦值,這屬于位置參數和關鍵字參數的混用,有關鍵字的部分必須放在后面,見示例3

示例3

def func(a,b,c):print("args:",a,b,c)if __name__ == "__main__":func(2,c=4,b=3) #輸出結果 args: 2 3 4

默認參數

有些函數參數提供了默認值,如果要使用,可不傳入,如示例4

示例4

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' def func(a,b,c=4):print("args:",a,b,c)if __name__ == "__main__":func(2,3) #輸出結果 args: 2 3 4

如果不使用其定義的默認值,可自行傳入,對其修改,如示例5

示例5

def func(a,b,c=4):print("args:",a,b,c)if __name__ == "__main__":func(2,3,5) #輸出結果 args: 2 3 5

命名關鍵字參數

與普通關鍵字參數不同,命名關鍵字參數必須用進行區分,后面的參數必須通過關鍵字傳入,見示例6

示例6

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' def func(a,b,*,c):print("args:",a,b,c)if __name__ == "__main__":func(2,3,c=4) #輸出結果 args: 2 3 4

如果不按照關鍵字傳入,則報TypeError的錯誤,見示例7

示例7

def func(a,b,*,c):print("args:",a,b,c)if __name__ == "__main__":func(2,3,4) #TypeError: func() takes 2 positional arguments but 3 were given

可變參數

如果定義的函數中帶有*args或者**args都是屬于可變參數方式進行參數傳入
*args是以元組的方式收集不匹配的的位置參數,見示例8

示例8

def func(a,b,*c):print("args c:"c) if __name__ == "__main__":func(2,3,4,5,6) #輸出結果 args c: (4, 5, 6)

在示例8中,有a,b,c3個形式參數,但是按照位置參數的形式傳入了5個參數,最后的3個參數都按照元組的形式(4,5,6)傳給了c。

定義函數時候,*args必須放在位置參數后面,否則報TypeError的錯誤,見示例9。

#示例9 def func(a,*c,d):print("args c:",c,d)if __name__ == "__main__":func(2,3,4,5,6) #TypeError: func() missing 1 required keyword-only argument: 'd'

**args是以字典的形式收集不匹配的位置參數,僅對關鍵字參數傳入有效,見示例10

示例10

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' def func(a,b,**c):print("args c:",c)if __name__ == "__main__":func(2,3,c=4,d=5,e=6)#輸出結果 args c: {'c': 4, 'd': 5, 'e': 6}

在示例10中,參數c收集了以字典的形式收集了后面的3個參數。跟*args一樣,函數中的**args必須放在位置參數后面。

再看一個傳參方式混合使用的的例子,見示例11。

示例11

def func(a,*b,c=None,**d):print("a:",a)print("b:",b)print("c:",c)print("d:",d)if __name__ == "__main__":func(2,3,4,c=4,d=5,e=6

輸出結果如下所示:

a: 2 b: (3, 4) c: 4 d: {'d': 5, 'e': 6}

從示例11可見,2賦值給a,b以元組的形式收集了3,4,c=4修改了默認參數的值,d以字典的形式收集了4,5,6

前面所說的args或者**args是出現在函數定義中的,其實在參數傳入時候也可以使用使用和**,他們會數據進行解包。如示例12和示例13

示例12

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' def func(a,b,c):print("a:",a,",b:",b,",c:",c) if __name__ == "__main__":a=(2,3,4)func(*a)#輸出結果 a: 2 ,b: 3 ,c: 4

示例13

def func(a,b,c):print("a:",a,",b:",b,",c:",c) if __name__ == "__main__":a={'a':1,'b':2,'c':3}func(**a)#輸出結果 a: 2 ,b: 3 ,c: 4

總結

以上是生活随笔為你收集整理的Python函数传参方式超级大汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。