多个实参,放到一个元组里面,以*开头,可以传多个参数;**是形参中按照关键字传值把多余的传值以字典的方式呈现

*args:(表示的就是将实参中按照位置传值,多出来的值都给args,且以元祖的方式呈现)

示例:

def foo(x, *args):print(x)print(args)foo(1, 2, 3, 4, 5) #其中的2,3,4,5都给了args

执行结果:

1
(2, 3, 4, 5)

当args与位置参数和默认参数混用的情况下:(注意三者的顺序)

示例一、(三者顺序是:位置参数、默认参数、*args)

def foo(x, y=1, *args):print(x)print(y)print(args)foo(1, 2, 3, 4, 5)#其中的x为1,y=1的值被2重置了,3,4,5都给了args

 执行结果是:

1
2
(3, 4, 5)

 示例二、(三者顺序是:位置参数、*args、默认参数)

ef foo(x,*args,y=1):print(x)print(args)print(y)foo(1,2,3,4,5)#其中的x为1,2,3,4,5都给了args,y按照默认参数依旧为1

执行结果是:

1
(2, 3, 4, 5)
1

其中关于*,可以从2个角度来看(需要拆分来看):

1、从形参的角度来看:

示例:

def foo(*args):#其实这一操作相当于def foo(a,b,c,d,e):print(args)
foo(1,2,3,4,5)#其中的1,2,3,4,5都按照位置传值分别传给了a,b,c,d,e

执行结果是:

(1, 2, 3, 4, 5)

2、从实参的角度来看:

示例:

def foo(x,y,z):print(x)print(y)print(z)foo(*(1,2,3))#其中的*(1,2,3)拆开来看就是:foo(1,2,3),都按照位置传值分别传给了x,y,z

执行结果是:

1
2
3 


**kwargs:(表示的就是形参中按照关键字传值把多余的传值以字典的方式呈现)

示例:

def foo(x,**kwargs):print(x)print(kwargs)
foo(1,y=1,a=2,b=3,c=4)#将y=1,a=2,b=3,c=4以字典的方式给了kwargs

执行结果是:

1
(2, 3, 4)
{'y': 1, 'a': 2, 'b': 3, 'c': 4}

错误示例:(由于顺序错误)

ef foo(x,**kwargs,*args):print(x)print(args)print(kwargs)
foo(1,y=1,a=2,b=3,c=4,2,3,4)

执行结果就会报错:

SyntaxError: invalid syntax

位置参数、默认参数、**kwargs三者的顺序必须是位置参数、默认参数、**kwargs,不然就会报错:

示例:

def foo(x,y=1,**kwargs):print(x)print(y)print(kwargs)
foo(1,a=2,b=3,c=4)#将1按照位置传值给x,y按照默认参数为1,a=2,b=3,c=4以字典的方式给了kwargs

执行结果是:

1
1
{'a': 2, 'b': 3, 'c': 4}

其中关于**,可以从2个角度来看(需要拆分来看):

1、从形参的角度来看:

示例:

def foo(**kwargs):#其实就是相当于def foo(y,a,b,c)print(kwargs)
foo(y=1,a=2,b=3,c=4)

执行结果是:

{'y': 1, 'a': 2, 'b': 3, 'c': 4}

2、从实参的角度来看:

示例一:

def foo(a,b,c,d):print(a)print(b)print(c)print(d)
foo(**{"a":2,"b":3,"c":4,"d":5})#**{"a":2,"b":3,"c":4,"d":5}是将字典里的每个值按照关键字传值的方式传给a,b,c,d

执行结果是

2
3
4
5

示例二:

def foo(a,b,c,d=1):print(a)print(b)print(c)print(d)
foo(**{"a":2,"b":3,"c":4})#**{"a":2,"b":3,"c":4}是将字典里的每个值按照关键字传值的方式传给a,b,c;d依旧按照默认参数

执行结果是:

2
3
4
1

转载于:https://www.cnblogs.com/jeavy/p/9514984.html

python函数——形参中的:*args和**kwargs相关推荐

  1. Python中的*args和**kwargs是什么?该如何使用?

    2020-01-16 12:30:00 全文共2911字,预计学习时长9分钟 来源:Pexels 在编程中,函数就是生命! 作为使用Python的新手--无论是编程新手,还是熟悉另一语言的人--都需要 ...

  2. 了解Python中的Args和Kwargs

    在本教程中,我将重点介绍Python中的参数( *args )和关键字参数( *kwargs ). 我将教你什么是args和kwargs,最重要的是,如何使用它们-即如何在函数中接受无限数量的参数和关 ...

  3. python args kwargs_Python中的args和kwargs

    有时,你会看到python中定义函数的时候带有两个奇怪的参数:*args.**kwargs.如果你曾经想知道它们是干什么的,或者想知道你的IDE为什么在main()函数中定义它们,那么本文可以帮助到你 ...

  4. Python编程学习:让函数更加灵活的*args和**kwargs(设计不同数量参数的函数)的简介、使用方法、经典案例之详细攻略

    Python编程学习:让函数更加灵活的*args和**kwargs(设计不同数量参数的函数)的简介.使用方法.经典案例之详细攻略 目录 *args和**kwargs(设计不同数量的参数函数)的简介 1 ...

  5. 一文弄懂Python中的*args 和 **kwargs

    1. 引言 在本文中,我们将讨论 Python 中的 *args 和 **kwargs 及其用法和示例. 闲话少说,我们直接开始吧. 2. 问题引入 在Python中写函数的时候,我们经常需要给函数传 ...

  6. Python3中参数*args和**kwargs介绍

    在Python中,我们可以使用两种特殊符号将可变数量的参数传递给函数:*args和**kwargs.你可以使用任何单词代替args和kwargs,但通常做法是使用args和kwargs.       ...

  7. 如何在Python3中使用*args和**kwargs

    介绍 在函数定义中,参数是指定给定函数可以接受的参数的命名实体. 编程时,您可能并不知道代码的所有可能的用途,并且可能希望为将来使用该模块的程序员或者为用户与代码交互提供更多选择.我们可以通过在我们的 ...

  8. python函数形参_python函数形参用法实例分析

    本文实例讲述了python函数形参用法.分享给大家供大家参考.具体如下: 函数形参: 函数取得的参数是你提供给函数的值,这样函数就可以利用这些值 做 一些事情.这些参数就像变量一样,只不过它们的值是在 ...

  9. python函数定义中没有对参数指定类型、这说明_二级单选-函数和代码复用

    . i. .w. 1 关于递归函数的描述,以下选项中正确的是 A 函数部包含对本函数的再次调用 B 函数比较复杂 C 包含一个循环结构 D 函数名称作为返回值 正确答案: A 2 关于递归函数基例的说 ...

最新文章

  1. SVN commit,update用法
  2. python php区别-Python3 面向对象 且与 PHP 区别
  3. signature=cc0735b80de74e294c47d2b8d527fd10,Fungal Transposable Elements
  4. SpringBoot 集成Web
  5. python调用zabbixapi接口_python调用zabbix api获取主机信息
  6. python中读取指定的行和列_Python怎么获取excle中指定行和列的值?
  7. 19个很有用的 JavaScript 库
  8. 类的使用经典案例使用类的成员函数显示时间、找出元素的最大值【C++面向对象编程】
  9. Winform窗体控件自适应大小
  10. 管理感悟:对事又对人
  11. Qt 信号与槽机制及实战案例
  12. 体积光渲染——SRP实现
  13. 为什么我选择移民新西兰?
  14. w10计算机无法启动不了怎么办,win10开不开机怎么办_win10电脑无法开机的解决步骤...
  15. php%00 截断,%00截断问题
  16. 基于SpringBoot点餐小程序的开发【前后端】
  17. APDL电磁仿真学习中可能会遇到的问题1
  18. 前端javascript常见问题总结
  19. iOS 自动订阅开发
  20. 他山之石 | 知识图谱在美团推荐场景中的应用实践

热门文章

  1. 自顶向下红黑树java,【CPP】各种各样的树(9)——自顶向下的红黑树
  2. 上古卷轴 java_上古卷轴II-双帝传奇
  3. mysql两个数据库表数据同步_php同步mysql两个数据库中表的数据
  4. ISE中UCF约束文件的编写
  5. 如何在tomcat下应用部署日志_教妹子用IDEA创建web应用,部署到Tomcat服务器
  6. mysql记录虚拟货币数据类型_近几年虚拟货币应用情况的相关数据
  7. 每个特征图1各因子和一个偏置_nlp中的概率图模型
  8. python 邮件中生成图表_60秒一口Python:147个demo,助你从新手小白步步进阶编程高手...
  9. linux连不上网 ens33,如何解决Linux 系统下 ifconfig 命令无网络接口 ens33
  10. 2013国家二级c语言上机考试点了编译并运行出现黑框闪退,2013年计算机二级C语言上机试题及解析2...