網(wǎng)站首頁 編程語言 正文
*args 和 **kwargs
首先,要知道的是并不是必須寫成*args和**kwargs。 只有變量前?的*才是必須的。所以,你也可以寫成*var 和**vars。寫成*args 和**kwargs只是?個通俗的命名約定。
*args 和 **kwargs 主要?于函數(shù)定義。 你可以將不定數(shù)量的參數(shù)傳遞給?個函數(shù)。
這里的不定的意思是: 預(yù)先并不知道,函數(shù)使?者會傳遞多少個參數(shù),所以在這個場景下使用這兩個關(guān)鍵字。
*args 的用法
*args是用來發(fā)送?個非鍵值對的可變數(shù)量的參數(shù)列表給?個函數(shù)。
來看一個例子,可以幫助理解:
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 允許將不定長度的鍵值對,作為參數(shù)傳遞給?個函數(shù)。 如果你想要在?個函數(shù)里處理帶名字的參數(shù),應(yīng)該使用**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 來調(diào)用函數(shù)
接下來學(xué)習(xí)一下怎樣使用*args 和**kwargs來調(diào)用?個參數(shù)為列表或者字典的函數(shù)。
現(xiàn)在有這樣?個函數(shù):
def test_args_kwargs(arg1, arg2, arg3):
print("arg1:", arg1)
print("arg2:", arg2)
print("arg3:", arg3)
可以使用*args或**kwargs來給這個函數(shù)傳遞參數(shù)。 比如這樣使用*args:
>>> args = ("two", 3, 5)
>>> test_args_kwargs(*args)
arg1: two
arg2: 3
arg3: 5
標準參數(shù)與*args、**kwargs在使用時的順序:
some_func(fargs, *args, **kwargs)
啥時候用
最常見的用例是在寫函數(shù)裝飾器的時候。
它也可以用來做猴子補丁。
原文鏈接:https://blog.csdn.net/weixin_41951954/article/details/128780002
相關(guān)推薦
- 2024-03-03 layuiadmin新建tabs標簽頁,點擊保存,打開新的標簽頁并刷新
- 2022-04-17 前端傳數(shù)組,后端怎么接收的問題
- 2022-05-22 SQL?Server數(shù)據(jù)庫基本概念、組成、常用對象與約束_MsSql
- 2021-12-06 CentOS環(huán)境使用NFS遠程目錄掛載過程介紹_Linux
- 2022-04-19 C語言位段(位域)機制結(jié)構(gòu)體的特殊實現(xiàn)及解析_C 語言
- 2022-05-18 python基礎(chǔ)教程之csv格式文件的寫入與讀取_python
- 2022-12-01 docker-compose簡單使用方法詳解_docker
- 2022-06-13 C語言指針超詳細講解上篇_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支