1. 程式人生 > 其它 >python 函式的引數梳理

python 函式的引數梳理

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

  注:

  1. 在Python中定義函式,可以用位置引數、預設引數、可變引數、關鍵字引數和命名關鍵字引數,這5種引數都可以組合使用;但是引數定義的順序必須是:位置引數、預設引數、可變引數、命名關鍵字引數和關鍵字引數。
  2. 雖然可以組合多達5種引數,但不要同時使用太多的組合,否則函式介面的可理解性很差。