Python函式的位置引數、關鍵字引數精講
一、關於函式的語法
1.語法
def 函式名([引數]): 函式文件字串 函式體
2.函式名:是必須符合Python名稱規範要求的識別符號,需要避免使用Python的關鍵字;
3.引數:稱為函式的形參,呼叫時傳遞的真實資料稱為實參,函式的引數可以沒有,也可以是多個甚至可變個數;
4.函式文件字串:在“Python語句的補充和修訂”那節老猿已經介紹,是很有用的東西,對於提高程式碼的可讀性和使用者體驗很有幫助,注意必須與函式體一樣與函式定義行保持縮排,具體內容在此老猿不再贅述;
5.函式體:定義函式具體的操作程式碼,如果需要返回值,必須使用return語句返回,唯一例外是生成器函式使用yield返回值。如果函式沒有返回值,可以不使用return或return後不跟返回值或return None即可。
二、函式的位置引數
函式的引數在呼叫時傳遞資料時,預設是按引數的位置順序傳值,即形參的順序與實參的順序逐一對應,這種引數的使用模式稱為位置引數。位置引數是最常用的一種引數使用形式。
使用位置引數傳遞實參的情況下,要求有預設值的引數放在無預設值的引數後面,如果某個有預設值的引數需要使用位置引數方式傳遞非預設值,則需要確保該引數前面的所有引數都有實參傳入。
>>> def cal(method,number1,number2): #使用位置引數傳參 if method=='+':return number1+number2 elif method=='-':return number1-number2 else:return None >>> cal('+',1,2) 3 >>> def cal(method='+',number1,number2): #帶預設值引數不能放在無預設值引數的前面 if method=='+':return number1+number2 elif method=='-':return number1-number2 else:return None SyntaxError: non-default argument follows default argument >>> def cal(number1,number2,method='+'): #帶預設值引數放在無預設值引數的後面 if method=='+':return number1+number2 elif method=='-':return number1-number2 else:return None >>> cal(1,2) 3 >>> cal(1,2,'-') -1
執行截圖:
三、函式的關鍵字引數
除了位置引數的函式引數使用方式,還有一種在函式呼叫時指定形參等於指定實參的引數使用模式,該模式稱為關鍵字引數。關鍵字引數使用可以不按形參的順序傳遞實參,系統按形參的名字確認實參傳遞給哪個引數。如:
def minus(minuend,subtractor): ? ?return minuend-subtractor ?#定義一個減法函式 minus(10,2) #結果為8 minus(2,10) #結果為-8 minus(subtractor=10,minuend=2) #結果為-8
四、小結
位置引數和關鍵字引數都是函式呼叫傳遞引數的常規方法,兩者在函式引數的使用與字串格式化的format方法中的自動編號索引format方法和關鍵字引數方式的format方法處理機制非常類似。
在位置引數和關鍵字引數的使用上,需要注意在同一個函式定義中兩者儘量不混用,一般情況下,只有可選帶預設值的引數多而無預設值的位置引數比較少的情況下才混用。如果位置引數和關鍵字引數要混用,必須確保位置引數在前,關鍵字引數在後,這樣直譯器才能按照先用位置引數傳值,再用關鍵字引數傳值,沒有出現的引數使用預設值;
舉例:
minus(subtractor=10,2) #報語法錯:SyntaxError: positional argument follows keyword argument
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1343/viewspace-2837151/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python函式/動態引數/關鍵字引數Python函式
- 函式的關鍵字引數函式
- python疑問5:位置引數,預設引數,可變引數,關鍵字引數,命名關鍵字引數區別Python
- 全網最適合入門的物件導向程式設計教程:48 Python函式方法與介面-位置引數、預設引數、可變引數和關鍵字引數物件程式設計Python函式
- python中關鍵字引數的個數有限制嗎?Python
- python---函式引數、變數Python函式變數
- python sorted()函式的引數用法Python函式
- Python函式引數總結Python函式
- python函式變長引數Python函式
- 函式引數 引數定義函式型別函式型別
- python基礎之 函式的引數Python函式
- python中函式的引數傳遞Python函式
- Python3之函式的引數傳遞與引數定義Python函式
- 3.3.2 函式的預設引數和佔位引數 函式過載函式
- 1分鐘掌握 Python 函式引數Python函式
- python不定長引數如何呼叫函式?Python函式
- 函式的引數傳遞函式
- 程式中的函式引數函式
- TypeScript 函式可選引數和預設引數TypeScript函式
- 函式、引數、解構函式
- 函式引數詳解函式
- Python的函式引數傳遞:傳值?引用?Python函式
- Python技法2:函式引數的進階用法Python函式
- 一文看懂 Python 中的函式引數Python函式
- Python語法—函式及引數傳遞Python函式
- Python 中__init__函式以及引數selfPython函式
- Javascript函式引數求值——Thunk函式JavaScript函式
- 函式基礎和函式引數函式
- 函式的呼叫方式和引數函式
- 封裝帶引數的函式封裝函式
- 揭秘 Go 中的函式引數Go函式
- JavaScript函式傳遞引數JavaScript函式
- 陣列作為函式引數陣列函式
- 函式中引數傳值函式
- ES6函式引數函式
- 給妹子講python-S01E20函式引數的傳遞與修改Python函式
- PHP 函式可變數量的引數列表PHP函式變數
- Python 序列型別以及函式引數型別Python型別函式