網站首頁 編程語言 正文
關于 *args與**args的用法
*args 和 **kwargs主要用于函數定義,你可以將不定數量的參數傳遞給某個函數。
*args
*args 不定參數(不定的意思是指,預先并不知道,函數使用者會傳遞多少個參數給你)
*args是用來發送一個非鍵值對的可變數量的參數列表給一個函數。
*args的用法:當傳入的參數個數未知,且不需要知道參數名稱時。
代碼如下:
def func_arg(farg, *args):
? ? print("formal arg:", farg)
? ? for arg in args:
? ? ? ? print("another arg:", arg)
func_arg(1,"youzan",'dba','hello')
# 輸出結果如下:
# formal arg: 1
# another arg: youzan
# another arg: dba
# another arg: hello
**kwargs
**kwargs 傳入鍵值對(例如:num1=11,num2=22)
**kwargs 允許將不定長度的鍵值對作為參數傳遞給一個函數。如果想要在一個函數里處理帶名字的參數,應該使用 **kwargs。
代碼如下:
#利用它轉換參數為字典
def kw_dict(**kwargs):
? ? return kwargs
print(kw_dict(a=1,b=2,c=3))
# 輸出結果如下:
# {'a': 1, 'b': 2, 'c': 3}
*args和**kwargs是什么意思
去面試的時候,做了一道筆試題——什么是*args和**kwargs,區別在哪里?
有點蒙,好像見過,但是不知道具體的意思。所以回來查了一下資料,做一下筆記。
總的來說,*args代表任何多個無名參數,返回的是元組;**kwargs表示關鍵字參數,所有傳入的key=value,返回字典;
*args和**kwargs的用途
*args 和 **kwargs 主要用于函數定義, 可以將不定數量的參數傳遞給一個函數。
*args 是用來發一個非鍵值對的可變數量的參數列表給一個函數; kwargs允許將一個不定長度的鍵值對,作為參數傳遞給一個函數。如果需要在一個函數中處理帶名字的參數時,此時就應該使用kwargs了。
def test(a,*args,**kwargs):
print(a)
print(args)
print(kwargs)
test(1,3,5,7,c='2',d=4)
1
(3, 5, 7)
{‘c’: ‘2’, ‘d’: 4}
在test(1,3,5,7,c=‘2’,d=4)中,函數里參數對應的數值為:a=1,*args表示剩下的沒有名稱的參數,**kwargs表示剩余的鍵值對。
def ak(*args,**kwargs):
print('args=',args)
print('kwargs=',kwargs)
print('***************************************')
if __name__=='__main__':
ak(2,4,6,8)
ak(a=2,b=4,c=6,d=8)
ak(2,4,6,8,a=1,b=3,c=5)
ak('x', 2, None, a=4, b='6', c=8)
#ak('a', a=1, 1, None, b='2', c=3)
同時使用*args和kwargs時,*args參數必須要列在kwargs前,否則會報錯。
ak('a', a=1, 1, None, b='2', c=3)
File “”, line 1
ak(‘a’, a=1, 1, None, b=‘2’, c=3)
^
SyntaxError: positional argument follows keyword argument
總結
原文鏈接:https://blog.csdn.net/qq_47183158/article/details/116598952
相關推薦
- 2022-03-29 jQuery實現小球點擊發射動畫_jquery
- 2022-07-07 關于bat腳本中的命令狀態碼相關的%errorlevel%變量問題_DOS/BAT
- 2021-11-26 Redis分布式鎖詳細介紹_Redis
- 2023-03-23 Android?View的事件分發機制深入分析講解_Android
- 2022-12-13 Python按天實現生成時間范圍序列的方法詳解_python
- 2023-03-29 golang?channel讀取數據的幾種情況_Golang
- 2022-11-04 關于Python?列表的索引取值問題_python
- 2022-05-27 時序數據庫TDengine寫入查詢的問題分析_數據庫其它
- 最近更新
-
- 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同步修改后的遠程分支