網站首頁 編程語言 正文
*args 和 **kwargs
首先,要知道的是并不是必須寫成*args和**kwargs。 只有變量前?的*才是必須的。所以,你也可以寫成*var 和**vars。寫成*args 和**kwargs只是?個通俗的命名約定。
*args 和 **kwargs 主要?于函數定義。 你可以將不定數量的參數傳遞給?個函數。
這里的不定的意思是: 預先并不知道,函數使?者會傳遞多少個參數,所以在這個場景下使用這兩個關鍵字。
*args 的用法
*args是用來發送?個非鍵值對的可變數量的參數列表給?個函數。
來看一個例子,可以幫助理解:
def test_var_args(f_arg, *argv):
print("first normal arg:", f_arg)
for arg in argv:
print("another arg through *argv:", arg)
>>> test_var_args('yasoob', 'python', 'eggs', 'test')
first normal arg: yasoob
another arg through *argv: python
another arg through *argv: eggs
another arg through *argv: test
**kwargs的用法
**kwargs 允許將不定長度的鍵值對,作為參數傳遞給?個函數。 如果你想要在?個函數里處理帶名字的參數,應該使用**kwargs。
def greet_me(**kwargs):
for key, value in kwargs.items():
print("{0} == {1}".format(key, value))
>>> greet_me(name="yasoob")
name == yasoob
使? *args 和 **kwargs 來調用函數
接下來學習一下怎樣使用*args 和**kwargs來調用?個參數為列表或者字典的函數。
現在有這樣?個函數:
def test_args_kwargs(arg1, arg2, arg3):
print("arg1:", arg1)
print("arg2:", arg2)
print("arg3:", arg3)
可以使用*args或**kwargs來給這個函數傳遞參數。 比如這樣使用*args:
>>> args = ("two", 3, 5)
>>> test_args_kwargs(*args)
arg1: two
arg2: 3
arg3: 5
標準參數與*args、**kwargs在使用時的順序:
some_func(fargs, *args, **kwargs)
啥時候用
最常見的用例是在寫函數裝飾器的時候。
它也可以用來做猴子補丁。
原文鏈接:https://blog.csdn.net/weixin_41951954/article/details/128780002
相關推薦
- 2022-04-15 c語言?指針零基礎講解_C 語言
- 2022-10-02 詳解R語言caret包trainControl函數_R語言
- 2022-08-12 關于VSCode?配置使用?PyLint?語法檢查器的問題_python
- 2022-08-11 C#中的composite模式示例詳解_C#教程
- 2022-11-02 Go?并發編程協程及調度機制詳情_Golang
- 2022-10-30 Python利用Pandas進行數據分析的方法詳解_python
- 2022-03-27 C++引用和指針的區別你知道嗎_C 語言
- 2024-03-01 解決 “TypeError: Cannot read properties of undefined
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支