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统计文本字符串里单词出现频率的方法
May 26 Python
初步剖析C语言编程中的结构体
Jan 16 Python
用python处理MS Word的实例讲解
May 08 Python
python让列表倒序输出的实例
Jun 25 Python
django缓存配置的几种方法详解
Jul 16 Python
python  Django中的apps.py的目的是什么
Oct 15 Python
Python读取指定日期邮件的实例
Feb 01 Python
pandas数据集的端到端处理
Feb 18 Python
python使用Plotly绘图工具绘制柱状图
Apr 01 Python
Python中栈、队列与优先级队列的实现方法
Jun 30 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
Feb 16 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
Jun 12 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 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
2014年10个最佳的PHP图像操作库
2014/07/14 PHP
JavaScript Date对象使用总结
2009/05/14 Javascript
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
浅析jQuery的链式调用之each函数
2010/12/03 Javascript
通过JS获取用户本地图片路径并显示的代码
2012/02/16 Javascript
javascript学习笔记(一) 在html中使用javascript
2012/06/18 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
2013/11/26 Javascript
JQuery实现表格动态增加行并对新行添加事件
2014/07/30 Javascript
javascript二维数组转置实例
2015/01/22 Javascript
JavaScript原生对象之String对象的属性和方法详解
2015/03/13 Javascript
提升jQuery的性能需要做好七件事
2016/01/11 Javascript
jQuery实现的模拟弹出窗口功能示例
2016/11/24 Javascript
简单明了区分escape、encodeURI和encodeURIComponent
2018/05/26 Javascript
vue 实现tab切换保持数据状态
2020/07/21 Javascript
微信小程序实现选项卡滑动切换
2020/10/22 Javascript
python中模块的__all__属性详解
2017/10/26 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
2019/02/21 Python
在VS2017中用C#调用python脚本的实现
2019/07/31 Python
Python中使用filter过滤列表的一个小技巧分享
2020/05/02 Python
Python Http请求json解析库用法解析
2020/11/28 Python
Python实现FTP文件定时自动下载的步骤
2020/12/19 Python
python实现模拟器爬取抖音评论数据的示例代码
2021/01/06 Python
荣耀商城:HIHONOR
2020/11/03 全球购物
应用电子专业学生的自我评价
2013/10/16 职场文书
电子商务应届生求职信
2013/11/16 职场文书
师德学习感言
2014/01/31 职场文书
财务出纳岗位职责
2014/02/03 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
2014入党积极分子批评与自我批评思想报告
2014/10/06 职场文书
党的群众路线教育实践活动个人对照检查材料(医生)
2014/11/05 职场文书
运动会通讯稿50字
2015/07/20 职场文书
死磕 java同步系列之synchronized解析
2021/06/28 Java/Android
Java结构型设计模式之组合模式详解
2022/09/23 Java/Android
js 实现验证码输入框示例详解
2022/09/23 Javascript