函數的傳回值
1.什麼是傳回值:
傳回值是一個函數的處理結果
2.為什麼要有傳回值
如果需要在程式中拿到函數的處理結果,做進一步的處理,則需要函數必須有傳回值
3.函數傳回值的應用:
函數的傳回值用return定義
格式: return x
注意:1.return是一個函數結束的标志,可有多個return,但隻要執行一次,函數就會結束運作
2.return的傳回值五類型限制,可任意資料類型
3.傳回值無個數限制,可用逗号分開多個任意類型的傳回值
0個:傳回None 1個:傳回值就是值本身
多個:傳回值為元組
4.不寫return,預設會在最後return None
調用函數
1.什麼是調用函數
函數名() 即調用,會執行函數體代碼
2.為何要調用?
執行函數的功能
3.函數調用的三種形式
def count(x):
return x
1.普通:count(x)
2.放在運算中:count(x) * 10
3.作為參數調用:count(count(x))
函數參數的應用:
形參:在函數定義階段括号内定義的參數,稱為形參,本質是變量名
實參:在函數調用階段括号内傳入的值,稱為實參,本質是變量的值
詳細分類:
1.位置形參:在函數定義階段,按從左到右的順序依次定義的參數
特點:必須被傳值,不可多,不可少
位置實參:在函數調用階段,按從左到右的順序依次定義的參數
特點:按照位置為對應的形參依次傳值
2.關鍵字實參:按key:value傳值,稱關鍵字實參
特點:可以打破位置的限制,但仍能為指定的形參指派
注意:1.可以混用位置參數與關鍵字實參,但位置實參必須在前面
2.可以混用,但不能對一個形參重複指派
3.預設參數:在函數定義階段,就已經為形參指派
特點:在定義階段已被指派,意味着在調用時可以不為其指派
def foo(x, y = 10): y=10就是預設參數
pass
注意:1.位置形參必須放在預設參數前面
2.預設參數的值隻在定義階段指派一次,即定義時就固定寫死了
3.預設參數的值通常應該定義不可變類型
總結:實參的應用:可取決于個人的習慣
形參的應用:大多數情況下調用值都一樣:預設參數
大多數情況下調用值不一樣:位置參數
4.可變長參數:指的是在函數調用時:傳入的參數個數可以不固定,而調用函數時,傳值的方式無非兩種,一種是位置實參,另一種是關鍵實參,是以對應着形參也必須有兩種解決方案來分别接收溢出的位置實參(*)與關鍵字實參(**)
位置參數(*)
①.形參中*接收溢出的位置實數,然後存成元組的形式,指派給*後的變量
②.實參中的參數也可以帶*:
實參中帶*,*會将該參數的值循環取出,打散成位置參數,但凡帶*實參,它就是位置實參,應該打散成位置實參看
約定俗成:形參中的*變量名的寫法都是*args
關鍵字參數(**)
①.形參中的**會将溢出的關鍵字實參全部接收,然後存成字典的形式,指派給**後的變量名
②.實參中帶**,**會将該參數的值循環取出,打散成關鍵字實數,但凡帶**的實參, 它就是關鍵字實參,應該打散成位關鍵字參看。**後必須是字典
約定俗成:形參中的*變量名的寫法都是**kwargs
應用:
def info(name,age,sex)
print(name)
print(age)
print(sex)
def wrapper(*args,**kwargs):
info(*args,**kwargs)
wrapper(‘egon’,18,’male,)
這樣使用(*args,**kwargs)作為參數時,可以原封不動的把外部調用時的參數原封不動地傳給内部參數