Python 中的 *args 和 **kwargs 是什麼
寫在前面
初學者在學習 python 函式時可能會遇到*args
和**kwargs
,剛開始可能難以理解。這篇文章將簡要解釋 Python 中的*args
和**kwargs
。閱讀完本文後,您將會理解這些概念以及它們在 Python 程式設計中的用法。
python 中的函式
在 Python 編碼中,一個很常見的操作是將引數傳遞給函式以執行特定的任務。而函式被定義時,引數通常限制在特定的數量上。讓我們來看一個程式碼片段,它定義了一個帶有兩個位置引數的函式來執行簡單的加法操作:
def addition(a, b):
sum = a + b
return sum
上面定義的函式僅可接受兩個引數,以下是函式呼叫,其中包含兩個引數:
addition(3, 2)
輸出:
5
沒有任何錯誤。但是,如果傳遞給它的引數多於或少於兩個,它會丟擲一個錯誤。這是函式在程式設計中的正常工作方式。這很簡單,但是如果我們需要定義一個包含不固定數量引數函式該怎麼辦呢?
我想定義個函式計算多個數字之和
使用*args
當你需要定義一個函式,該函式接受的位置引數數量不固定,而是必須足夠靈活,可以接受任意數量的引數時,這就是*args
派上用場的地方。
在 Python 中,*args
通常作為一個元組資料結構,當函式被呼叫時,它能夠容納傳遞給它的多個引數。
def addition(*args):
sum = 0
for num in args:
sum += num
return sum
函式呼叫和結果:
result = addition(1, 2, 3, 4, 5)
print(result) # 輸出:15
使用**kwargs
另一方面,**kwargs
是一種資料結構,用於在函式呼叫時儲存多個關鍵字引數。
我知道這可能會有點令人困惑,讓我使用一個程式碼片段來解釋我所說的關鍵字引數,我們在上面的程式碼基礎上新增一個 percent 條件,用於指示是否以百分比形式輸出:
def addition(*args, **kwargs):
sum = 0
for num in args:
sum += num
# 是否以百分比形式輸出
if kwargs.get("percent") is True:
sum = sum * 100
return sum
呼叫函式:
result = addition(1, 2, 3, 4, 5, percent=True)
print(result) # 輸出:1500
現在你應該理解了什麼事關鍵詞引數了。
寫在最後
-
*args
是元組資料結構,使得函式在呼叫時能夠接受任意數量的位置引數。 -
**kwargs
確保使用它定義的函式能夠接收多個鍵值對作為引數,如果要傳遞字典作為引數,則需要使用兩個前置的星號**
進行解包。
更多內容可以學習《測試工程師 Python 工具開發實戰》書籍、《大話效能測試 JMeter 實戰》書籍
相關文章
- Python 中的可變引數: 什麼是*args和**kwargs?Python
- Python可變引數*args和**kwargsPython
- Python 擴充之 *args & **kwargsPython
- 在Jinja巨集裡使用*args和**kwargs
- python中*args的使用Python
- python不定長函式:*args 和 **args的使用Python函式
- Python中的類和物件是什麼Python物件
- spark三種清理資料的方式:UDF,自定義函式,spark.sql;Python中的zip()與*zip()函式詳解//及python中的*args和**kwargsSpark函式SQLPython
- Python中的arange是什麼?和range有什麼不同?Python
- python中的input是什麼Python
- python中的字典是什麼Python
- python is和==的區別是什麼?Python
- Python中的rad是什麼意思?Python
- Python中的作用域是什麼Python
- python中loc是什麼Python
- Python中什麼是閉包?閉包的好處是什麼?Python
- python 中 os.fork() 與 os.waitpid(pid,*args, **args) 說明PythonAI
- Python中的mechanize模組是什麼?Python
- python OpenCV中的閾值是什麼PythonOpenCV
- python中global是什麼意思?Python
- python中mat是什麼意思?Python
- python中return是什麼意思?Python
- Java和Python是什麼?有什麼區別?JavaPython
- 什麼是Cython?和Python有什麼關係?Python
- opencv和Python的區別是什麼?Python開發!OpenCVPython
- python中Matplotlib是什麼?怎麼用?Python
- Python是什麼意思?Python幹什麼用的?Python
- Python中的“特權種族”是什麼?Python
- Python 中的數字到底是什麼?Python
- python中類方法的區別是什麼Python
- python中的name等於main是什麼PythonAI
- python中upper函式的用法是什麼?Python函式
- Java中equals和==比的是什麼Java
- python中,"_"和"__"的作用有什麼不同?Python
- python中collections.Counter是什麼?Python
- python中flake8是什麼Python
- 什麼是Python直譯器?和Python IDE有什麼區別?PythonIDE
- Python中的.pyc檔案是幹什麼的Python