一、參數默認值
當定義一個函數時,可以給函數的參數設置默認值。當調用該函數時,如果沒有給該參數傳入值,則默認使用設置的默認值。
def say_hello(name='guest'): print('Hello', name) say_hello()
輸出:
Hello guest
在上述代碼中,定義了一個函數say_hello,給參數name設置了默認值’guest’。當調用函數時,如果沒有給name傳入值,則默認使用’guest’值。
這種方法可以在函數的可選參數很多的情況下減少函數的調用難度。
二、位置參數
在調用一個函數時,如果傳入參數的順序與函數定義時的順序一致,則被稱為位置參數。
def sum(a, b, c): return a + b + c print(sum(1, 2, 3))
輸出:
6
在上述代碼中,調用了函數sum,並按照定義時的順序傳入了參數a=1,b=2,c=3,因此這三個參數被稱為位置參數。
三、關鍵字參數
在調用一個函數時,如果傳入參數的順序與函數定義時的順序不一致,則可以使用關鍵字參數來指定參數的名稱。
def say_hi(first_name, last_name): print('Hi,', first_name, last_name) say_hi(last_name='Smith', first_name='John')
輸出:
Hi, John Smith
在上述代碼中,調用了函數say_hi,並通過關鍵字參數指定了last_name和first_name參數的值。
關鍵字參數可以有效避免因為順序錯誤導致的參數取值錯誤問題,對於定義時參數較多的函數來說,使用關鍵字參數可以讓代碼的可讀性更高。
四、可變參數
在Python中,可以通過在函數定義時使用*args來表示函數參數可以是任意數量的,這樣的參數被稱為可變參數。在函數體中,可變參數將被存儲為一個元組。
def sum(*args): res = 0 for i in args: res += i return res print(sum(1, 2, 3)) print(sum(1, 2, 3, 4, 5))
輸出:
6 15
在上述代碼中,使用*args定義了一個可變參數,可以接受任意數量的參數。在函數體中,使用一個循環對所有的參數進行求和。
需要注意的是,如果在函數定義時同時存在可變參數和其他參數,則可變參數要放在參數列表的最後。
五、關鍵字可變參數
除了可變參數外,在Python中還可以通過在函數定義時使用**kwargs來表示函數也可以接受關鍵字參數,這樣的參數被稱為關鍵字可變參數。在函數體中,關鍵字可變參數將被存儲為一個字典。
def personal_info(**kwargs): for key, value in kwargs.items(): print(key, '->', value) personal_info(name='Tom', age=20, gender='male')
輸出:
name -> Tom age -> 20 gender -> male
在上述代碼中,使用**kwargs定義了一個關鍵字可變參數,可以接受任意數量的關鍵字參數。在函數體中,使用一個循環輸出所有的關鍵字參數。
六、參數組合
在Python中,可以結合使用位置參數、關鍵字參數、可變參數和關鍵字可變參數,同時定義一個函數。
def print_info(name, *args, age=20, **kwargs): print('Name:', name) print('Age:', age) print('Args:', args) print('Kwargs:', kwargs) print_info('Tom', 1, 2, 3, age=21, gender='male', city='Beijing')
輸出:
Name: Tom Age: 21 Args: (1, 2, 3) Kwargs: {'gender': 'male', 'city': 'Beijing'}
在上述代碼中,定義了一個函數print_info,同時包含了位置參數、可變參數、關鍵字參數和關鍵字可變參數。當調用函數時,給name和可變參數args傳入了值,同時指定了關鍵字參數age的值,和關鍵字可變參數kwargs的值。
七、小結
在Python中,函數參數具有很大的靈活性,可以通過參數默認值、位置參數、關鍵字參數、可變參數和關鍵字可變參數等多種方式來滿足不同的需求。
在實際的開發中,可以根據函數的特點和需求來選擇合適的參數使用方式,從而提高代碼的可讀性和可維護性。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/247100.html