程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python---可變參數*args, **kwarg的應用

編輯:Python

文章目錄

  • 前言
  • 一、可變參數說明
  • 二、可變參數打包
  • 二、可變參數解包


前言

當函數的參數前面有一個星號*的時候表示是一個可變的位置參數,兩個星號**表示是可變的關鍵字參數

一、可變參數說明

可對函數傳遞的參數進行打包(元組tuple或字典dictionary),也能打散(分解成單個元素),其中元組的打包和解包使用單星號*,字典的打包和拆解使用雙行號**

二、可變參數打包

打包,就是將傳遞給函數的任意多個(也可以是零個)非關鍵字參數/關鍵字參數打包成一個元組/字典(元組只能接收非關鍵字參數,字典只能接收關鍵字參數)

代碼如下(示例):

def param(*args, **kwarg):
for i in args:
print(i)
for i,j in kwarg.items():
print(j, j)
print('*' * 20)
if __name__ == '__main__':
param(1, 2, a=4, b=5)
param(2, 3, a=1, b=2, c=3)

返回結果:

1
2
4 4
5 5
********************
2
3
1 1
2 2
3 3
********************
Process finished with exit code 0

二、可變參數解包

解包,就是將傳遞給函數的一個列表、元組或字典拆分成獨立的多個元素然後賦值給函數中的參數變量(包括普通的位置參數,關鍵字參數,元組,字典也即**關鍵字參數)
代碼如下(示例):

def param(*args, **kwarg):
for i in args:
print(i)
for i,j in kwarg.items():
print(j, j)
print('*' * 20)
if __name__ == '__main__':
a = (1, 2, 3)
b = [1, 16, 22]
c = {
'a':11, 'b':13}
param(a, c)
param(*a, **c)
param(b, c)
param(*b, **c)

返回結果:

#說明:param(a, c) 輸出a和b
(1, 2, 3)
{
'a': 11, 'b': 13}
********************
#說明:param(*a, **c) 打散a和c
1
2
3
11 11
13 13
********************
#說明:param(b, c) 輸出b和c
[1, 16, 22]
{
'a': 11, 'b': 13}
********************
#說明:param(*b, **c) 打散b和c
1
16
22
11 11
13 13
********************

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved