默認參數指函數/方法在定義時爲形參賦值,對應的形參稱爲默認參數。python
默認參數是一個參數定義期的概念,與調用無關。bash
若是參數定義默認參數,在調用函數/方法時,未對該參數進行傳值,則使用默認值做爲該參數的值。函數
定義格式:
def 函數名(形參1 = 值1,…):
函數體
……
調用格式一(同普通參數,無特殊):
函數名(實參) 使用實參做爲形參的值,不使用默認值
調用格式二:
函數名() 使用默認值做爲形參的值
複製代碼
代碼演示:spa
def test(a = 2,b = 5):
print(a)
print(b)
test()
複製代碼
運行結果:code
2
5
複製代碼
1.默認參數的定義必須在位置參數的右側對象
2.默認參數在調用傳值時,按照位置參數進行對待,從左至右依次賦值,不能跳過左側的某個參數直接爲後面的參數賦值遞歸
函數/方法在調用時爲指定名稱的形參進行賦值,對應實參稱關鍵字參數。 關鍵字參數是一個參數調用期的概念,與定義無關。string
按名稱確認實參爲指定的形參賦值。it
定義格式(同普通參數定義,無特殊):io
def 函數名(形參 ,…):
函數體
……
複製代碼
調用格式:
函數名( 形參名 = 實參)
複製代碼
代碼演示:
def test(a = 2, b = 5):
print(a)
print(b)
test(b = 100)
複製代碼
運行結果:
2
100
複製代碼
函數/方法在定義時,定義一個特殊的形參,用於接收調用時傳入的任意數量的實參,對應的形參稱爲可變參數。
可變參數是一個參數定義期與調用期都有效的概念。
簡化函數定義過程,定義能夠接收無數個實參的形參
形參接受到的數據,不管數量多少,包裝成一個元組對象
定義格式:
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)
複製代碼
代碼演示:
def test(a, b, *args, c = 1):
pass
複製代碼
函數/方法在定義時,定義一個特殊的參數,用於接受未定義直接使用的關鍵字參數,對應的形參稱爲字典參數。
簡化函數定義過程,接收未定義直接使用的關鍵字參數。 在多層級調用間進行關鍵字參數的逐級傳遞。
未定義的關鍵字參數,不管數量多少,接收後包裝成一個字典對象。
定義格式:
def 函數名(**kwargs,···):
函數體
······
複製代碼
調用格式:
函數名(未定義的變量名1 = 實參1,未定義的變量名2 = 實參2,…… )
複製代碼
代碼演示:
def test(**kwargs):
print(kwargs)
test(a = 1,b = 2,c = 6)
複製代碼
運行結果:
{'a': 1, 'b': 2, 'c': 6}
複製代碼
代碼演示:
def test(a, b, *args, c = 1,**kwargs):
pass
複製代碼
全部的容器都支持解包操做,格式:*容器變量名
函數/方法在執行過程當中出現了對自身函數/方法的調用,稱該過程爲遞歸調用,稱這樣的函數爲遞歸函數。
同普通函數
一、函數體中具備對自身函數的調用 二、函數體中具備明確的函數執行結束斷定條件
Python語言中函數調用最大層級爲1000層,超過該層級,程序將報錯(不一樣語言設置不一樣)
匿名函數即沒有名稱的函數,在python語言中,匿名函數是使用lambda關鍵字定義的一個特殊表達式,也稱爲lambda表達式。
格式一:
定義: 函數名 = lambda 形參 : 返回值
調用:結果 = 函數名(實參)
格式二:
定義並調用: 結果 = (lambda 形參 : 返回值)(實參)
複製代碼
無參格式: 結果 = (lambda :返回值)()
多返回值格式: 無,可以使用數據存儲模型返回多個數據
無返回值格式:無,必須有具體值或結果爲None
複製代碼