栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Python函数中不定长参数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python函数中不定长参数

Python函数中不定长参数

定义

在函数的形参列表中:

  • 用*args元组存储在函数调用时传入的所有额外的数值,元组名为args;
  • 用**kwargs字典存储在函数调用时传入的所有等式值,字典名为kwargs

之后就是在函数内调用这两个变量了,元组和字典的具体使用可以参看我的另一篇文章Python高级变量类型
举例:

def func(*args,**kwargs):   
    print("args元组为:",args)
    print("kwargs字典为:",kwargs)

func(1,2,3,4,5,name = '小明',age = 23)

运行结果:

注释: 这里的*args和**kwargs不是必须为args和kwargs,也可以自己定义为*XX和*XXX,但是通常情况下,Pycharm自动提示不香么?

实例 普通参数和不定长参数同时存在

举例1:

def func(a,b,*args,**kwargs):
    print('a的值为:',a)
    print('b的值为:',b)
    print("args元组为:",args)
    print("kwargs字典为:",kwargs)
    
func(1,2,3,4,5,name = '小明',age = 23)    # 一一对应,额外的给args和kwargs

运行结果:

  • 这里可以很明显的发现,形参列表和实参列表是一一对应的关系,将实参一个一个传入形参中,1赋值给a,2赋值给b,3,4,5没有变量可以赋值,则作为额外的数值存放在元组args,之后的name和age等式也是一样的道理

举例2:

def func(a,b,*args,c,**kwargs):   # 在args和kwargs加入另外一个形参
    print('a的值为:',a)
    print('b的值为:',b)
    print('c的值为:',c)
    print("args元组为:",args)
    print("kwargs字典为:",kwargs)

func(1,2,3,4,5,name = '小明',12,age = 23)

运行结果:

  • 知道上一个例子,这里报错就很容易理解,在arga右边有一个普通形参c,当实参传入额外数据的时候,传入3,4,5,12,到底是哪一个数值应该赋值给c呢,代码就会发生歧义,产生错误。
  • 总结: 形参列表中,在args或者wkargs的右边都是不能存在其他的普通参数的,这一点可以结合C++中,函数形参列表中含有默认形参值得右边不可存在普通参数的性质一起类别学习。
普通参数和不定长参数不同时存在

结合上一块例子可以知道,当普通参数和不定长参数不同时存在时,可以只存在args,也可只存在wkargs,当然两者也可都同时存在,且两者顺序不可颠倒。

举例1:

def func(*args,**kwargs):
    print("args元组为:",args)
    print("kwargs字典为:",kwargs)

func(1,2,3,4,5,name = '小明',age = 23)

运行结果:

举例2:

def func(*args):
    print("args元组为:",args)
    
func(1,2,3,4,5)

运行结果:

应用 计算不定长参数的和
def func(*args):
    print("args元组为:",args)
    s = 0
    for i in args:
        s += i
    print("和为:",s)

func(2,3,4,7,2,3)
func()

运行结果:

  • 这里最后输出的时空元组,别看错了,所以和也是0
  • 针对不定长参数函数的操作,牢记args是元组,kwargs是字典就可以了,具体两种Python高级变量类型的使用可以参看我的另一篇文章《Python高级变量类型》
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/698668.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号