Python中的arg,*args,**kwargs用法

(一)arg

def main(arg):   # arg为形参
    print(arg)

# 调用main函数
main(1)   # 传入实参1

运行后输出1

如果此时想传入多个参数,还得修改形参,如想传入两个参数时代码修改如下:

def main(arg1, arg2):   
    print(arg1, args)

# 调用main函数
main(1,2)   

这样改来改去就很麻烦

又或者此时如果想传入多个参数,但是又不确定有几个

以上情况可以用*args

(二)*args

args是arguments的缩写,表示位置参数

def main(arg, *args):   
    print(arg)
    print(args)

# 调用main函数
main(1,2,2,2,2,2,2,2)   

输出结果为:

1
(2,2,2,2,2,2,2)

*args可以实现传入多个,但又不确定几个的形参定义。实参传入后Python将其组织成元组(tuple)

(三)**kwargs

*args是传入任意多的参数。如果想传入任意多具有参数名称的参数,应用**kwargs

kwargs是keyword arguments的缩写,表示关键字参数

def main(arg, *args, **kwargs):   
    print(arg)
    print(args)
    print(kwargs)

# 调用main函数
main(1,2,2,2,2,2,2,2,Student="学生",Teacher="老师")   

输出结果:

1
(2,2,2,2,2,2,2)
{'Student':'学生', 'Teacher':'老师'}

**kwargs可以实现传入多个,但又不确定几个的键值对定义。实参传入后Python将其组织成字典(dict)

(四)查看输出变量类型

加上type()查看输出变量类型

def main(arg, *args, **kwargs):   
    print(type(arg))
    print(type(args))
    print(type(kwargs))

# 调用main函数
main(1,2,2,2,2,2,2,2,Student="学生",Teacher="老师")   

输出结果:



(五)总结

*args和**kwargs是Python中可变参数的两种形式,且*args必须放在**kwargs的前面,因为位置参数在关键字参数的前面

*args可以将用户指定的任意多个参数打包为一个元组传到函数中进行进一步运算

**kwargs将用户传入的参数打包为字典传入函数中用于进一步的计算

参考

Python编程基础:第二十五节 args参数*args

Python编程基础:第二十六节 kwargs参数**kwargs

python中可变参数args传入函数时储存的类型是,Python函数可变参数定义及其参数传递方式实例详解...

你可能感兴趣的:(Coding随手记,python)