Python函式的位置引數、關鍵字引數精講

duanhao發表於2021-09-11

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章