维恩图在线制作网站,上海官方最新消息,企业微信邮箱入口,陕西建设人才网站文章目录 前言一、*args 和 **kwargs 是什么#xff1f;二、*args 的用法打包参数#xff1a;将不定数量的参数传递给一个函数拆分参数#xff1a;调用一个函数 三、**kwargs 的用法打包参数#xff1a;将不定数量的参数传递给一个函数拆分参数#xff1a;调用一个函数 四… 文章目录 前言一、*args 和 **kwargs 是什么二、*args 的用法打包参数将不定数量的参数传递给一个函数拆分参数调用一个函数 三、**kwargs 的用法打包参数将不定数量的参数传递给一个函数拆分参数调用一个函数 四、位置参数、*args 和 **kwargs 的组合使用 前言
Python中传递可变参数的方式有两种位置参数positional argrment和关键词参数keyword argument。 本文主要讲魔法参数 *args和 **kwargs 的如何使用如何将不定数量的参数传递给一个函数和调用一个函数。 一、*args 和 **kwargs 是什么
*args 和 **kwargs 都是python中的可变参数。*args可以用来表示任何多个无名参数本质上是tuple类型。**kwargs可以用来表示关键字参数本质上是dict类型。
def func1(*args,**kwargs):print(type(args))print(args)print(type(kwargs))print(kwargs)
func1(1,2,hello world,a4,b6,coo,d[])*args和 **kwargs 重要是前面的*你也可以写 *var和**vars而写成 *args和 **kwargs 只是程序员通俗写法。
def func1(*var,**var2):print(type(var))print(var)print(type(vars))print(vars)
func1(1,2,hello world,a4,b6,coo,d[])运行结果跟上面的使用*args和 **kwargs的一致。
*args参数必须在**kwargs前面因为位置参数必须在关键词参数前面。
如果把**kwargs放在*args前面会报错无效引用。
def func1(**kwargs,*args):print(type(args))print(args)print(type(kwargs))print(kwargs)
func1(a4,b6,coo,d[],1,2,hello world)二、*args 的用法
打包参数将不定数量的参数传递给一个函数
举例1 将非键值的可变数量的参数列表给一个函数。
def func1(*args):for i in args:print(arg throuth args:{}.format(i))
func1(1,2,3,4,5)举例2 函数接受实参时按顺序分配给函数形参如果遇到带∗的形参那么就把还未分配出去的实参以元组形式打包pack,分配给那个带∗的形参。
def func1(x,*args):print(a:{}.format(x))print(number:{}.format(args))print(type(args))
func1(1,2,3,4,5)从例子中可以看出args接受了实参变成了(2,3,4,5)第一个参数1被形参接受走了。
def func1(x,y,*args):print(a:{}.format(x))print(b:{}.format(y))print(number:{}.format(args))print(type(args))
func1(1,2,3,4,5)从例子中可以看出args接受了实参变成了(3,4,5)第一个参数1被形参x接受走了第二个参数2被形参y接受走了。
举例3 如果把*args放在位置参数前面需要将在参数传入时明确定义 *args后面的位置参数定义否则会报错。
把 *args放在前面
def func1(*args,x,y):print(a:{}.format(x))print(b:{}.format(y))print(number:{}.format(args))print(type(args))
func1(1,2,3,x4,y5)把 *args放在中间
def func1(x,*args,y):print(a:{}.format(x))print(b:{}.format(y))print(number:{}.format(args))print(type(args))
func1(1,2,3,4,y5)拆分参数调用一个函数
*args是把打包了的参数拆成单个的依次赋值给函数的形参。
举例
def func1(arg1,arg2,arg3):print(arg1,\n,arg2,\n,arg3)
args[1,2,3]
func1(*args)三、**kwargs 的用法
打包参数将不定数量的参数传递给一个函数
**kwargs可以用来发送一个不定长度键值对的字典参数给一个函数。
举例
def func1(**kwargs):for key,value in kwargs.items():print({0}{1}.format(key,value))
func1(a4,b6,coo,d[])拆分参数调用一个函数
**kwargs是把字典的键值拆成单个的依次赋值给函数的形参。
举例
def func1(arg1,arg2,arg3):print(arg1,\n,arg2,\n,arg3)kwargs{arg1:1,arg2:2,arg3:3}
func1(**kwargs)四、位置参数、*args 和 **kwargs 的组合使用
位置参数、*args、**kwargs 三者的顺序 必须是 位置参数、*args、**kwargs
举例
def func1(x,*args,**kwargs):print(x)print(args)print(kwargs)
func1(1,2,3,4,ahh,bworl,csoda)参考文档 https://blog.csdn.net/GODSuner/article/details/117961990 https://zhuanlan.zhihu.com/p/51236818