歡迎光臨
每天分享高質量文章

1分鐘掌握 Python 函式引數

任何編程語言函式都是非常重要的一部分,而在進行函式呼叫時,瞭解函式的引數傳遞方式是非常有必要的。Python中支持哪些傳參方式呢?

 

Python中的傳參方式是比較靈活的,主要包括以下六種:

 

  • 按照位置傳參
  • 按照關鍵字傳參
  • 預設引數
  • 元組傳參
  • 字典傳參
  • 綜合傳參

 

按照位置傳參

 

顧名思義,引數與形引數目一致,並且是按照位置一一對應的。

def func(a, b):
    return a+b*2

當呼叫函式func(1,2)時,則按照a=1,b=2的方式形參與引數對應,傳回結果為5。

 

按照關鍵字傳參

 

這種方式在呼叫函式時既傳引數,也傳形參。因而,不需要根據位置對應了,位置可以顛倒:

def func(a, b):
    return a+b*2

當呼叫函式func(b=1,a=2)時,則按照b=1,a=2的方式形參與引數對應,匹配的方式是關鍵字而非位置,傳回結果為4。

 

預設引數

 

預設引數必須放在前兩類引數之後,在呼叫函式的時候可以傳參,也可以不傳。不傳則採用預設的引數值。

def func(a, b, c = 3):
    return a+b*2+c

其中,c為預設引數。當通過func(1,2)呼叫函式時,c的取值為預設值3,函式的執行結果為8;當通過func(1,2,5)呼叫函式時,c的取值為引數值5,函式的執行結果為10。

 

元組傳參

 

傳入的引數以元組的形式呈現,長度不限,可以通過元組的訪問方式依次訪問各個入參:

def func(*args):
    for eacharg in args:
        print ('tuple arg:', eacharg)

呼叫方式如下:func(‘I’, ‘Love’, ‘PythonSomething’)

 

呼叫結果為:

tuple arg: I
tuple arg: Love
tuple arg: PythonSomething

字典傳參

 

傳入的引數以字典的形式呈現,長度不限,可以通過字典的訪問方式依次訪問各個入參:

def func(**kwargs):
    for eachkwarg in kwargs.keys():
        print('Dict Arg', eachkwarg, ':', kwargs[eachkwarg])

呼叫方式如下:

func(English_name = ‘PythonSomething’,  Chinese_name= ‘Python那些事’)

 

呼叫結果為:

Dict Arg English_name : PythonSomething
Dict Arg Chinese_name : Python那些事

綜合傳參

 

是以上幾種傳參方式的綜合。實際上,大家從上面的例子也可以發現,元組傳參和字典傳參已經能夠滿足大部分傳參場景。所以,通常所的綜合傳參指的是這兩種的組合,大家在原始碼中也經常會發現它們的身影:

def func(*args,**kwargs):
    for eacharg in args:
        print('tuple arg:', eacharg)

    for eachkwarg in kwargs.keys():
        print('Dict Arg', eachkwarg, ':', kwargs[eachkwarg])

呼叫示例為:

func(‘I’, ‘Love’, ‘PythonSomething’, English_name = ‘PythonSomething’,  Chinese_name= ‘Python那些事’)

 

呼叫結果為:

tuple arg: I
tuple arg: Love
tuple arg: PythonSomething
Dict Arg Chinese_name : Python那些事
Dict Arg English_name : PythonSomething

(完)

    赞(0)

    分享創造快樂