python3进阶之*args与**kwargs用法
Posted 神毓·逍遥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3进阶之*args与**kwargs用法相关的知识,希望对你有一定的参考价值。
*args 和 **kwargs 主要用于函数定义。 你可以将不定数量的参数传递给一个函数。不定的意思是:预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场景下使用这两个关键字。其实并不是必须写成*args 和**kwargs。 *(星号)才是必须的. 你也可以写成*ar 和**k. 而写成*args 和**kwargs只是一个通俗的命名约定.
python函数传递参数的方式有两种:
位置参数(positional argument)
关键词参数(keyword argument)
*args与**kwargs的区别,两者都是python中的可变参数。
*args表示任何多个无名参数,它本质是一个tuple;
**kwargs表示关键字参数,它本质上是一个dict;
如果同时使用*args和**kwargs时,必须*args参数列要在**kwargs前。
示例1.
def fun(*args,**kwargs):
print(‘args=‘, args)
print(‘kwargs=‘,kwargs)
fun(1,2,3,4,A=‘a‘,B=‘b‘,C=‘c‘,D=‘d‘)
输出:
args= (1, 2, 3, 4)
kwargs= {‘A‘: ‘a‘, ‘B‘: ‘b‘, ‘C‘: ‘c‘, ‘D‘: ‘d‘}
示例2:
def mutil(name,*ar):
print(name,"主人,你好")
for item in ar:
print("我的名字叫:",item)
mutil("liuhu","xiaoyun","liuwei")
# liuhu 主人,你好
# 我的名字叫: xiaoyun
# 我的名字叫: liuwei
示例3:
def love(**kwargs):
for key,value in kwargs.items():
print("{0}爱着{1}".format(key,value))
love(name="liuhu",age=18)
# name爱着liuhu
# age爱着18
示例4:
def test(arg1, arg2, arg3):
print("arg1:", arg1)
print("arg2:", arg2)
print("arg3:", arg3)
args = ("two", 3, 5)
test(*args)
kwargs = {"arg3": 3, "arg2": "two", "arg1": 5}
test(**kwargs)
# arg1: two
# arg2: 3
# arg3: 5
# arg1: 5
# arg2: two
# arg3: 3
以上是关于python3进阶之*args与**kwargs用法的主要内容,如果未能解决你的问题,请参考以下文章