Python之函数的参数
Python中函數的參數有五種:位置參數(必選參數)、默認參數、可變參數、關鍵字參數、命名關鍵字參數。
#位置參數
//定義位置參數函數 def sayHello(name):print('hello',name)//調用函數 sayHello('Tom') 復制代碼調用結果: ('hello', 'Tom')
此時的sayHello(name)函數,參數name是一個位置參數。
當調用函數的時候,必須傳入一個參數。其他方式調用都會報錯:
//無參數調用 sayHello() TypeError: sayHello() takes exactly 1 argument (0 given) //多參數調用 sayHello('Tom','Jarry') TypeError: sayHello() takes exactly 1 argument (2 given) 復制代碼#默認參數
//定義具有默認參數的函數 def sayHello(name,greet='Hello'):print(greet,name) //調用函數 sayHello('Tom') sayHello('Jarry','Hai') 復制代碼調用結果: ('Hello', 'Tom') ('Hai', 'Jarry')
默認參數的好處不言自明,它能夠簡化函數的調用。設置默認參數的時候,需要注意的是:必選參數在前,默認參數在后,否則會報錯。
但函數有多個默認參數時,調用的時候,既可以按順序提供默認參數,也可以不按順序;當不按順序提供參數的時候,要把參數名寫上。舉個栗子:
def sayHello(name,greet='hello',word='how are you?'):print(greet,name,word)sayHello('Tom',word = 'how do you do?') 復制代碼調用結果: ('hello', 'Tom', 'how do you do?')
#可變參數 可變參數的函數允許傳入任意個參數,這些可變參數在函數調用的時候會自動組裝成一個tuple。
//定義可變參數的函數 def sayHello(*saySomething):for tmp in saySomething:print(tmp) //調用函數 以下方式調用都沒問題 sayHello('Sawadika','Jarry') sayHello('nihao','BOBO','how do you do ?') sayHello('hello','Tom','how are you ?') 復制代碼如果已經有一個list或者tuple,要調用可變參數的函數怎么辦?可以這樣:
//已有的list somethings = ['nihao','Zhangye','how do you do ?'] //加*即可 sayHello(*somethings) 復制代碼調用結果: nihao Zhangye how do you do ?
#關鍵字參數 關鍵字參數的函數允許傳入任意個含參數名的參數,這些關鍵字參數在函數內部自動組裝成一個dict
//定義一個關鍵字參數 def sayHello(**saySomething):print(saySomething)//調用關鍵字參數的函數 sayHello(name='TOM',greet='hello',word='How do you do') sayHello(name='BOBO',word='how are you') sayHello(name='JHON')復制代碼調用結果: {'word': 'How do you do', 'name': 'TOM', 'greet': 'hello'} {'word': 'how are you', 'name': 'BOBO'} {'name': 'JHON'}
與可變參數類似,如果已經有一個dict,允許把dict當做參數直接傳進去:
//已有的dict para = {'name':'BOBO','greet':'nihao'} //定義關鍵字參數 def sayHello(**parameters):if 'name' in parameters:print('name is',parameters['name'])if 'greet' in parameters:print('greet is',parameters['greet'])if 'word' in parameters:print('word is',parameters['word']) //調用 sayHello(**para) 復制代碼調用結果: ('name is', 'BOBO') ('greet is', 'nihao')
#命名關鍵字參數 使用關鍵字參數的函數,允許傳入任意不受限制的關鍵字參數,我們只能在函數內部進行檢查參數;如果要限制關鍵字參數的名字,就可以用命名關鍵字參數
//定義一個命名關鍵字參數函數 def sayHello(name, *, greet='nihao', word):print(greet,name, word) //調用 sayHello('TOM',greet='hello',word='how are you') sayHello('TOM',word='how do you do') 復制代碼調用結果: hello TOM how are you nihao TOM how do you do
特別注意:命名關鍵字參數是python3的語法,python2.7不兼容。
#最后 以上介紹的函數的五種參數都可以組合使用,除了可變參數無法和命名關鍵字參數混合。但是請注意,參數定義的順序必須是:必選參數、默認參數、可變參數/命名關鍵字參數和關鍵字參數。
本文整理資料來自:參考廖雪峰的Python教程
總結
以上是生活随笔為你收集整理的Python之函数的参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决nginx: [emerg] bin
- 下一篇: 道康宁有机硅助力动力电池发展