def func(x,y):
.....
func(19,20) # 直接呼叫
new=func(19,30) # 表示式呼叫
def delete(a,b):
return func(a,b) #作為返回值呼叫
函式的引數
-
按功能分和位置分
- 形參def func(x,y)這裡的:x,y
- 需要在函式呼叫時傳遞進去
- 只在函式內部生效
- 實參func(8,9) 這裡的:8,9
- 呼叫函式時放進去的實際值
- 可以按位置或關鍵字傳遞
- 可以使表示式,常量,變數
- 形參def func(x,y)這裡的:x,y
-
按位置傳參情況
- 有位置,不傳引數,報錯
- 沒有位置,多傳引數,報錯
- 位置引數必須按位置傳遞值,換位置就會導致函式內的引數錯位
-
按關鍵字傳參情況
-
關鍵字傳遞引數時,要指定函式定義時的位置引數
-
允許按位置傳遞引數
-
允許不按位置傳遞
-
可以混合用,混用時位置引數必須放關鍵字前面
-
預設引數可以不給值,不傳值就是預設值,傳值就用傳遞的值,必須放在最後
-
順序:
-
位置引數>關鍵字引數>預設引數
-
可變長位置引數
-
定義:*args
-
作用:解決多傳位置引數問題
-
可以用一個變數解決超出指定引數個數的引數,
-
用元組接收
-
放在預設引數後面
-
關鍵字是*
-
*是解包語法
-
print(*'dream') 輸出: d r e a m
-
-
def func(x,y,z='',*args)
可變長關鍵字引數
- **kwargs
- 接收多餘的關鍵字傳參
- 放在*arg後面
- 返回字典
- 字典可以用*解包,得到所有key
- 字典不能用**解包
命名關鍵字引數
-
def fun(x,y,z='',*,a,b)
-
*前引數可以使用位置傳參或者關鍵字傳參,但是 **之後的引數必須按照關鍵字傳遞
-
*後面的引數,預設引數允許放在位置引數之前
-
不能跟*args,或者**kwargs 連用
混合使用
- 順序
- 位置>預設>*args>**kwargs
型別提示
-
optional 語法
-
註解:定義函式時指定引數型別
-
基本資料型別註解:在形參後(:型別)
-
不可變:是一種弱型別約束,是建議,不強制
- 字串def fun(name:str)
- 數字 def fun(name:int)
-
可變from typing import Dict,List,Tuple,Set
-
列表
-
字典
-
from typing import Dict def func(x:Dict[str,int]) x是個字典引數,期待鍵是str,值是int
-
-
元組
-
集合
-
-
約束函式返回值型別
-
def func(x,y)-->int #約定返回值為int型別 return
-
from typint import Uion def func(x,y)-->Uion[int,str ]#約定返回值為int型別或者str return
-
#返回可選引數型別 from typing import Optional def func(x,y)->Optional[int]
-