Python中的函數Function(Part2)

因爲參數是函數中非常非常重要的一部分,而Python裏面對參數的特性有很多特殊的要求,所以我們要對函數的參數有一個詳細的瞭解。

下面我們將詳細介紹幾類特殊參數的用法:

默認參數

關鍵字參數

VarArgs參數(可變參數類型):在Python中,很多時候我們無法確定一個函數的參數個數。以一個能實現求和的函數爲例,事先你不知道有多少個數會被相加,你甚至不會知道他們的類型是什麼。

例:

默認參數:

# 默認參數的函數,在Python中調用函數時不需要指明所有的參數的值,如果參數沒有被指明將直接使用默認值
def repeat_str(s, times = 1):
    repeated_strs = s * times
    return repeated_strs

repeated_strings = repeat_str("Happy Birthday!")      #只傳入函數中第一個參數的值(字符串),並沒有指明第二個參數值(重複多少次),Python將使用定義函數時參數的默認值
print(repeated_strings)
repeated_strings_2 = repeat_str("Happy Birthday!" , 4)      #當函數中兩個參數都被指明時,Python會自動忽略默認值直接使用指定值
print(repeated_strings_2)

注:當我們只指定一個參數時,Python編輯器她怎麼知道指定的是哪一個參數的值?Python在調用函數時,他將會在調用的函數和定義的函數裏面同時取第一個參數作爲對應,也就是說他會把調用函數的第一個參數值賦值給定義函數的第一個參數值,然後再依次往下對比。所以當我們在調用函數裏只用一個參數時,Python首先找到定義函數的第一個參數,定義函數的其他參數將使用默認值。因此Python是按從左到右的順序一一來找對應的,因此Python有一個限制要求,不能再默認參數後面跟隨沒有默認參數。

例:
#不能在有默認值的參數後面跟隨沒有默認值的參數
#f(a, b =2)合法
#f(a = 2, b)非法,因爲Python無法進行對應

關鍵字參數:
例:
#關鍵字參數: 當我們調用函數時,我們並不想給所有的參數都傳值,我們只想選擇性的傳入部分參數,那麼我們就可以用到關鍵字參數
def func(a, b = 4, c = 8):      #定義函數是b、c使用默認參數
    print('a is', a, 'and b is', b, 'and c is', c)

func(13, 17)    #13與a對應,17與b對應
func(125, c = 24)   #125與a對應,跳過b的值,24與c的值對應(利用關鍵字參數傳入)
func(c = 40, a = 80)    #在使用關鍵字參數傳入參數時,順序就沒那麼重要了
VarArgs參數:
假設在定義一個函數時,我們也不知道在調用的時候會傳入多少個參數,可能會傳入1個參數,可能會傳入5個參數,也可能是10個參數,這時候就要用到VarArgs參數,VarArgs參數不必指明多少個參數,而是將參數的數量當做一個變量。
例:
#VarArgs參數
def print_paras(fpara, *nums, **words): #“*+參數名”Python將默認傳入的參數是一個list,“**+參數名”Python將多個有關鍵字指明的參數與之對應
    print("fpara: " + str(fpara))
    print("nums: " + str(nums))
    print("words: " + str(words))
    
print_paras("hello", 1, 3, 5, 7, word = "python", anohter_word = "java")



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章