python- 函式高階

python小胡發表於2018-12-18

函式高階

一、預設引數

1、預設引數概念

預設引數指函式/方法在定義時為形參賦值,對應的形參稱為預設引數。

預設引數是一個引數定義期的概念,與呼叫無關。

2、預設引數的作用

如果引數定義預設引數,在呼叫函式/方法時,未對該引數進行傳值,則使用預設值作為該引數的值。

3、預設引數基本語法
定義格式:
    def 函式名(形參1 = 值1,…):
	    函式體		  
    		……	
呼叫格式一(同普通引數,無特殊):
    函式名(實參)	使用實參作為形參的值,不使用預設值
呼叫格式二:
    函式名()		使用預設值作為形參的值
複製程式碼

程式碼演示:

def test(a = 2,b = 5):
    print(a)
    print(b)
test()
複製程式碼

執行結果:

2
5
複製程式碼
4、注意事項
  • 1.預設引數的定義必須在位置引數的右側

  • 2.預設引數在呼叫傳值時,按照位置引數進行對待,從左至右依次賦值,不能跳過左側的某個引數直接為後面的引數賦值

二、關鍵字引數

1、關鍵字引數概念

函式/方法在呼叫時為指定名稱的形參進行賦值,對應實參稱關鍵字引數。 關鍵字引數是一個引數呼叫期的概念,與定義無關。

2、關鍵字引數的作用

按名稱確認實參為指定的形參賦值。

3、關鍵字引數基本語法

定義格式(同普通引數定義,無特殊):

def 函式名(形參 ,…):
    函式體		  
    		……	
複製程式碼

呼叫格式:

函式名( 形參名 = 實參)
複製程式碼

程式碼演示:

def test(a = 2, b = 5):
    print(a)
    print(b)
test(b = 100)
複製程式碼

執行結果:

2
100
複製程式碼
4、注意事項
  • 1.關鍵字引數必須出現在位置引數的後面
  • 2.不允許使用關鍵字引數對同一個形參進行多次賦值
  • 3.關鍵字引數既可以為位置引數賦值,也可以為預設引數賦值。通常使用關鍵字引數解決預設引數選擇性賦值問題。

三、可變引數

1、可變引數的概念

函式/方法在定義時,定義一個特殊的形參,用於接收呼叫時傳入的任意數量的實參,對應的形參稱為可變引數。

可變引數是一個引數定義期與呼叫期都有效的概念。

2、可變引數的作用

簡化函式定義過程,定義可以接收無數個實參的形參

形參接受到的資料,無論數量多少,包裝成一個元組物件

3、可變引數基本語法

定義格式:

def 函式名(*args ,…):
	函式體		  
    		……	
複製程式碼

呼叫格式(同普通引數,無特殊):

函式名( 實參1,…… )
複製程式碼

程式碼演示:

def test(*args):
    print(args)
test(1,2,3,4,5,6,7,6)
複製程式碼

執行結果:

(1, 2, 3, 4, 5, 6, 7, 6)
複製程式碼
4、注意事項
  • 1、可變引數在一個函式/方法定義中只能出現一個
  • 2、可變引數只能出現在位置引數的後面,位置引數在左側,可變引數在右側
  • 3、關鍵字引數只能出現在位置引數的後面,賦值時必須使用關鍵字引數傳值,否則值會被可變引數接收
  • 4、定義函式的引數時,先定義位置引數,再定義可變引數,最後定義預設引數

程式碼演示:

def test(a, b, *args, c = 1):
    pass
複製程式碼

四、字典引數

1、字典引數的概念

函式/方法在定義時,定義一個特殊的引數,用於接受未定義直接使用的關鍵字引數,對應的形參稱為字典引數。

2、字典引數的作用

簡化函式定義過程,接收未定義直接使用的關鍵字引數。 在多層級呼叫間進行關鍵字引數的逐級傳遞。

未定義的關鍵字引數,無論數量多少,接收後包裝成一個字典物件。

3、字典引數基本語法

定義格式:

def 函式名(**kwargs,···):
    函式體
    ······
複製程式碼

呼叫格式:

函式名(未定義的變數名1 = 實參1,未定義的變數名2 = 實參2,…… )
複製程式碼

程式碼演示:

def test(**kwargs):
    print(kwargs)
test(a = 1,b = 2,c = 6)
複製程式碼

執行結果:

{'a': 1, 'b': 2, 'c': 6}
複製程式碼
4、注意事項
  • 1.字典引數在一個函式/方法定義中只能出現一個
  • 2.定義函式的引數時,先定義位置引數,再定義可變引數,然後定義預設引數,最後定義字典引數

程式碼演示:

def test(a, b, *args, c = 1,**kwargs):
    pass
複製程式碼
5、其他

所有的容器都支援解包操作,格式:*容器變數名

五、遞迴函式

1、遞迴函式概念

函式/方法在執行過程中出現了對自身函式/方法的呼叫,稱該過程為遞迴呼叫,稱這樣的函式為遞迴函式。

2、遞迴函式基本語法

同普通函式

3、遞迴函式定義要求

1、函式體中具有對自身函式的呼叫 2、函式體中具有明確的函式執行結束判定條件

4、遞迴函式呼叫要求

Python語言中函式呼叫最大層級為1000層,超過該層級,程式將報錯(不同語言設定不同)

六、匿名函式

1、匿名函式概念

匿名函式即沒有名稱的函式,在python語言中,匿名函式是使用lambda關鍵字定義的一個特殊表示式,也稱為lambda表示式。

2、匿名函式基本語法
格式一:
定義:	函式名 = lambda 形參 : 返回值
呼叫:結果 = 函式名(實參)

格式二:
定義並呼叫:	結果 = (lambda 形參 : 返回值)(實參)
複製程式碼
3、匿名函式特殊語法
無參格式:	結果 = (lambda :返回值)()

多返回值格式:  無,可使用資料儲存模型返回多個資料
無返回值格式:無,必須有具體值或結果為None
複製程式碼

相關文章