Python語言中函數參數主要有四種類型:位置參數、默認參數、可變參數和關鍵字參數。本文將從python函數大全及使用、python函數可變參數、python函數參數類型、python函數參數支持的類型、python函數指定參數類型等多個方面詳細闡述Python函數參數的四種類型。
一、python函數大全及使用
Python是一門解釋性高級語言,支持多種編程範式,包括面向過程、面向對象和函數式編程等。函數作為Python語言的基礎性特徵,廣泛應用於各種開發場景中。在Python中,函數通過def語句定義,可以有形參或無形參,並且可以返回值或不返回值。下面是一個簡單的函數示例:
def say_hello(): print('Hello World!') say_hello()
在上面的代碼示例中,我們定義了一個名為say_hello()的函數,函數體內部內容為列印輸出”Hello World!”的語句。在函數定義後,我們可以通過函數名加上一對括弧來調用這個函數,從而執行其中的語句。
二、python函數可變參數
可變參數是指在函數調用時,參數的個數是可變的。Python中的可變參數有兩種:可變位置參數和可變關鍵字參數。具體定義方式如下:
1. 可變位置參數
在函數定義時,我們可以在形參前加上一個星號(*)來表示可變位置參數。這種參數將會把所有傳遞過來的位置參數封裝成一個元組,從而可以進行處理。
def sum(*args): result = 0 for num in args: result += num return result print(sum(1, 2, 3, 4)) # 輸出:10
在上面的示例中,函數sum()定義了一個可變位置參數args,將傳入的所有位置參數封裝成一個元組,在函數內部通過for循環對其進行遍歷並求和,最終得到結果返回。在函數調用時,我們可以傳入任意數量的參數,這些參數將被封裝成一個元組傳遞給函數。
2. 可變關鍵字參數
在函數定義時,我們可以在形參前加上兩個星號(**)來表示可變關鍵字參數。這種參數將會把所有傳遞過來的關鍵字參數封裝成一個字典,從而可以進行處理。
def print_info(**kwargs): for key, value in kwargs.items(): print(f'{key}: {value}') print_info(name='Tom', age=21, gender='male')
在上面的示例中,函數print_info()定義了一個可變關鍵字參數kwargs,將傳入的所有關鍵字參數封裝成一個字典,在函數內部通過for循環對其進行遍歷並輸出。在函數調用時,我們可以傳入任意數量的關鍵字參數,這些參數將被封裝成一個字典傳遞給函數。
三、python的四種函數參數類型
除了可變參數之外,Python中還有三種常規的函數參數類型:位置參數、默認參數和關鍵字參數。
1. 位置參數
在函數定義時,我們可以指定形參的名稱和類型,其默認情況為位置參數。位置參數是最常見的參數類型,在函數調用時,根據位置順序將實參傳遞給對應的形參,參數順序必須和函數定義時的順序一致。
def power(base, exponent): return base ** exponent print(power(2, 3)) # 輸出:8
在上面的示例中,函數power()定義了兩個形參,分別為base和exponent,對應位置參數的位置順序為1和2。在函數調用時,我們傳入了兩個實參2和3,分別對應位置參數的位置順序為1和2,因此結果為2的3次方等於8。
2. 默認參數
在函數定義時,我們可以為某些參數指定默認值,這些參數即為默認參數。當函數調用時沒有傳入這些參數的值時,將會使用默認值。
def say_greetings(name, greeting='Hello'): print(f'{greeting}, {name}!') say_greetings('Tom') # 輸出:Hello, Tom! say_greetings('Jerry', 'Hi') # 輸出:Hi, Jerry!
在上面的示例中,函數say_greetings()定義了兩個參數,其中greeting為默認參數,其默認值為’Hello’。在第一個函數調用中,我們只傳入了一個實參Tom,因此使用默認值Hello輸出;在第二個函數調用中,我們傳入了兩個實參Jerry和Hi,因此使用傳入的實參值輸出。
3. 關鍵字參數
在函數調用時,我們可以通過指定參數名稱來傳遞參數,這些參數即為關鍵字參數。使用關鍵字參數可以不用按照位置順序傳遞參數值,從而使得代碼更加易讀、易懂。
def say_greetings(name, greeting): print(f'{greeting}, {name}!') say_greetings(name='Tom', greeting='Hello') # 輸出:Hello, Tom! say_greetings(greeting='Hi', name='Jerry') # 輸出:Hi, Jerry!
在上面的示例中,函數say_greetings()定義了兩個參數,分別為name和greeting。在進行函數調用時,我們通過指定參數名稱來傳遞參數值,從而實現關鍵字參數的使用。在兩次函數調用中,所傳遞的參數順序不同,但由於使用了關鍵字參數,因此結果正確輸出。
4. 帶星號的參數
帶星號的參數指的是前面介紹過的可變參數,其包括可變位置參數和可變關鍵字參數。使用帶星號的參數可以使得函數定義更加靈活,同時還能夠簡化函數的調用方式,提高代碼的可讀性。
# 示例1:可變位置參數的使用 def sum(*args): result = 0 for num in args: result += num return result print(sum(1, 2, 3, 4)) # 輸出:10 # 示例2:可變關鍵字參數的使用 def print_info(**kwargs): for key, value in kwargs.items(): print(f'{key}: {value}') print_info(name='Tom', age=21, gender='male')
在上面的示例中,函數sum()使用了可變位置參數args,而函數print_info()使用了可變關鍵字參數kwargs。其定義方式分別為 *args 和 **kwargs。在兩次函數調用中,傳遞的參數數量和類型都不確定,需要通過這種帶星號的參數進行封裝和處理。
四、python函數參數帶星號
帶星號參數可以通過在函數調用時使用星號(*)來進行解包,將元組或字典的元素展開為多個參數傳遞給函數。這種方式比較常見的應用場景有兩種:
1. 解構元組或列表
def say_hello(name, age): print(f'Hello, {name}, your age is {age}!') person = ('Tom', 21) say_hello(*person) # 輸出: Hello, Tom, your age is 21!
在上面的示例中,我們定義了一個元組person,其中包含兩個元素:Tom和21。在進行函數調用時,我們用星號來解構這個元組,將其中的元素展開成兩個參數分別傳遞給函數。這裡的星號是和person結合使用的,即*person。
2. 解構字典
def print_info(name, age, gender): print(f'Name: {name} | Age: {age} | Gender: {gender}') person = { 'name': 'Tom', 'age': 21, 'gender': 'male' } print_info(**person)
在上面的示例中,我們定義了一個字典person,其中包含三個元素:name、age和gender。在進行函數調用時,我們用雙星號來解構這個字典,將其中的鍵值展開成三個參數分別傳遞給函數。這裡的雙星號是和person結合使用的,即**person。
五、python函數參數類型總結
本文主要對Python函數參數的四種類型進行了詳細的闡述,包括位置參數、默認參數、可變參數和關鍵字參數。在Python函數的參數定義中,我們可以根據實際情況選擇不同的參數類型來滿足具體需求。在編寫Python函數時,我們可以靈活使用這些參數類型來實現更加有用的函數功能。
原創文章,作者:DRUYW,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/331222.html