python不定长参数*args和**kwargs使用

print('*args:\n')


# *args 实质就是将函数传入的参数,存储在元组类型的变量args当中
def fun_var_args(param, *args):
    """可变参数"""
    print("param:", param)
    print("args:", args, 'type:', type(args))
    for value in args:
        print("other arg:", value)


fun_var_args(1, "two", 3, 9, "Hi")

print('******************************************')


def fun_input_list(var1, var2, var3):
    print(var1, var2, var3)


var_list = ["second", 3]
fun_input_list(1, *var_list)  # 解包之后传参

print('******************************************')

print('**kwargs:\n')


# **kwargs 实质就是将函数的参数和值,存储在字典类型的kwargs变量中
def fun_var_kwargs(param, **kwargs):
    """通过字典格式存储可变参数"""
    print("param: %s" % param)
    print("kwargs:", kwargs, 'type:', type(kwargs))

    for key in kwargs.keys():
        print(kwargs[key])


fun_var_kwargs(1, var1="second", var2=35, var3="third", g=9)

print('******************************************')


def fun_input_dic(var1, var2=2, var3=3):
    print(var1, var2, var3)


dic_input = {"var2": "second", "var3": "third"}
fun_input_dic(1, *dic_input)  # 此时传入字典的键
fun_input_dic(1, **dic_input)  # 此时传入字典的值

print('******************************************')


def fun_kwargs(**kwargs):
    """可变参数调用方法, 个人觉得该方法最常用"""
    fun_input_dic(**kwargs)


inputs = {'var1': 'First', "var3": 'Third'}
fun_kwargs(**inputs)


"""
输出结果:
*args:

param: 1
args: ('two', 3, 9, 'Hi') type: <class 'tuple'>
other arg: two
other arg: 3
other arg: 9
other arg: Hi
******************************************
1 second 3
******************************************
**kwargs:

param: 1
kwargs: {'var1': 'second', 'var2': 35, 'var3': 'third', 'g': 9} type: <class 'dict'>
second
35
third
9
******************************************
1 var2 var3
1 second third
******************************************
First 2 Third

"""

参考文章:大话Python中*args和**kargs的使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值