Python关键字及可变参数*args,**kw原理解析


Posted in Python onApril 04, 2020

可变参数

顾名思义,函数的可变参数是传入的参数可以变化的,1个,2个到任意个。当然可以将这些 参数封装成一个 list 或者 tuple 传入,但不够 pythonic。使用可变参数可以很好解决该问题,注意可变参数在函数定义不能出现在特定参数和默认参数前面,因为可变参数会吞噬掉这些参数。

def report(name, *grades):
  total_grade = 0
  for grade in grades:
    total_grade += grade
  print(name, 'total grade is ', total_grade)

定义了一个函数,传入一个参数为 name, 后面的参数*grades 使用了 * 修饰,表明该参数是一个可变参数,这是一个可迭代的对象。该函数输入姓名和各科的成绩,输出姓名和总共成绩。所以可以这样调用函数 report('Mike', 8, 9),输出的结果为 Mike total grade is 17, 也可以这样调用 report('Mike', 8, 9, 10),输出的结果为 Mike total grade is 27

关键字参数

关键字参数可以传入0个或者任意个含参数名的参数,这些参数名在函数定义中并没有出现,这些参数在函数内部自动封装成一个字典(dict).

def portrait(name, **kw):
  print('name is', name)
  for k,v in kw.items():
    print(k, v)

定义了一个函数,传入一个参数 name, 和关键字参数 kw,使用了 ** 修饰。表明该参数是关键字参数,通常来讲关键字参数是放在函数参数列表的最后。如果调用参数 portrait('Mike', age=24, country='China', education='bachelor') 输出:

name is Mike
age 24
country China
education bachelor

通过可变参数和关键字参数,任何函数都可以用 universal_func(*args, **kw) 表达。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现设置windows桌面壁纸代码分享
Mar 28 Python
利用Python绘制数据的瀑布图的教程
Apr 07 Python
详解Python中DOM方法的动态性
Apr 11 Python
Python使用struct处理二进制的实例详解
Sep 11 Python
使用Python通过win32 COM实现Word文档的写入与保存方法
May 08 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
Jan 15 Python
Python常用爬虫代码总结方便查询
Feb 25 Python
Python代码太长换行的实现
Jul 05 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
Oct 28 Python
opencv3/C++图像像素操作详解
Dec 10 Python
nginx搭建基于python的web环境的实现步骤
Jan 03 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
Aug 17 Python
150行Python代码实现带界面的数独游戏
Apr 04 #Python
Python decorator拦截器代码实例解析
Apr 04 #Python
浅谈Python中os模块及shutil模块的常规操作
Apr 03 #Python
Python实现多线程下载脚本的示例代码
Apr 03 #Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
Apr 03 #Python
pycharm安装及如何导入numpy
Apr 03 #Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
Apr 03 #Python
You might like
php数据结构与算法(PHP描述) 快速排序 quick sort
2012/06/21 PHP
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
Laravel 5.0 发布 新版本特性详解
2015/02/10 PHP
php实现的二叉树遍历算法示例
2017/06/15 PHP
php实现数组重复数字统计实例
2018/09/30 PHP
ext combox 下拉框不出现自动提示,自动选中的解决方法
2010/02/24 Javascript
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
2013/02/26 Javascript
JS实现双击编辑可修改状态的方法
2015/08/14 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
jQuery实现底部浮动窗口效果
2016/09/07 Javascript
详解jQuery中的事件
2016/12/14 Javascript
nodejs学习笔记之路由
2017/03/27 NodeJs
jQuery动态添加li标签并添加属性和绑定事件方法
2018/02/24 jQuery
实例讲解JavaScript预编译流程
2019/01/24 Javascript
详解Vue项目中实现锚点定位
2019/04/24 Javascript
JavaScript实现好看的跟随彩色气泡效果
2020/02/06 Javascript
[01:00:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第三场 1月10日
2021/03/11 DOTA
python数组复制拷贝的实现方法
2015/06/09 Python
python中偏函数partial用法实例分析
2015/07/08 Python
Windows中安装使用Virtualenv来创建独立Python环境
2016/05/31 Python
Python简单获取自身外网IP的方法
2016/09/18 Python
Python 3.x读写csv文件中数字的方法示例
2017/08/29 Python
Python实现句子翻译功能
2017/11/14 Python
tensorflow实现softma识别MNIST
2018/03/12 Python
Python面向对象之反射/自省机制实例分析
2018/08/24 Python
python中的tcp示例详解
2018/12/09 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
CSS3实现swap交换动画
2016/01/19 HTML / CSS
详解基于 Canvas 手撸一个六边形能力图
2019/09/02 HTML / CSS
阿玛尼意大利官网:Armani意大利
2018/10/30 全球购物
Johnson Fitness澳大利亚:高级健身器材
2021/03/16 全球购物
广播电视新闻学专业应届生求职信
2013/10/08 职场文书
后勤自我鉴定
2013/10/13 职场文书
校园游戏活动新闻稿
2014/10/15 职场文书
文明家庭事迹材料
2014/12/20 职场文书
企业财务经理岗位职责
2015/04/08 职场文书