python 函式的引數梳理
阿新 • • 發佈:2021-10-07
1.位置引數
def func(x,y)
2.預設引數
def func(x,y=None)
y 在未傳參的情況下 預設使用“None”,預設引數 需放在後面.
3.可變引數
def func(x,*args)
可變引數允許你傳入0個或任意個引數,這些可變引數在函式呼叫時自動組裝為一個tuple.
def func(x,*args): #所有引數 print(x,*args) print("可變引數型別:{}".format(type(args))) for n in args: print(n) if __name__=="__main__": func(123,55,5) func(123)
執行結果: 123 55 5 可變引數型別:<class 'tuple'> 55 5 123 可變引數型別:<class 'tuple'>
4.關鍵字引數
def func(x,**kwargs)
關鍵字引數允許你傳入0個或任意個含引數名的引數,這些關鍵字引數在函式內部自動組裝為一個dict.
def func2(x,**kwargs): # 所有引數 print(x,kwargs) #打印出所有關鍵字引數 for k in kwargs: print("{}={}".format(k,kwargs[k])) #關鍵字的key print(*kwargs)
執行結果:
2 {'key1': 'value1', 'key2': 'value2'}
key1=value1
key2=value2
key1 key2
----------
2 {'city': 'Beijing', 'job': 'Engineer'}
city=Beijing
job=Engineer
city job
5.命名關鍵字引數
def func(*,arg1,arg2)
命名關鍵字引數 類似於位置引數,指定的引數 必須填寫且需使用上引數名,否則報錯
def func3(*,arg1,arg2): print(arg1,arg2) if __name__=="__main__": func3(arg1='s',arg3='ss') 引數名錯誤 報錯:func3(arg1='s',arg3='ss') TypeError: func3() got an unexpected keyword argument 'arg3'
def func3(*,arg1,arg2):
print(arg1,arg2)
if __name__=="__main__":
func3(4,5)
不帶引數名報錯:
func3(4,5)
TypeError: func3() takes 0 positional arguments but 2 were given
注:
- 在Python中定義函式,可以用位置引數、預設引數、可變引數、關鍵字引數和命名關鍵字引數,這5種引數都可以組合使用;但是引數定義的順序必須是:位置引數、預設引數、可變引數、命名關鍵字引數和關鍵字引數。
- 雖然可以組合多達5種引數,但不要同時使用太多的組合,否則函式介面的可理解性很差。