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标准异常和异常处理详解
Feb 02 Python
python计算时间差的方法
May 20 Python
python解析xml文件实例分析
May 27 Python
Python线程指南详细介绍
Jan 05 Python
python+selenium+autoit实现文件上传功能
Aug 23 Python
Python 绘图库 Matplotlib 入门教程
Apr 19 Python
python筛选出两个文件中重复行的方法
May 31 Python
python使用PIL模块获取图片像素点的方法
Jan 08 Python
Python3之手动创建迭代器的实例代码
May 22 Python
Python3如何使用range函数替代xrange函数
Oct 05 Python
Python爬虫过程解析之多线程获取小米应用商店数据
Nov 14 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
Jan 29 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防注
2007/01/15 PHP
php 从数据库提取二进制图片的处理代码
2009/09/09 PHP
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
使用PHPMailer发送邮件实例
2017/02/15 PHP
JS 建立对象的方法
2007/04/21 Javascript
jquery 插件之仿“卓越亚马逊”首页弹出菜单效果
2008/12/25 Javascript
jQuery中判断一个元素是否为另一个元素的子元素(或者其本身)
2012/03/21 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
2013/12/16 Javascript
深入理解JavaScript系列(31):设计模式之代理模式详解
2015/03/03 Javascript
jQuery CSS3自定义美化Checkbox实现代码
2016/05/12 Javascript
JavaScript基于原型链的继承
2016/06/22 Javascript
AngularJS基础 ng-show 指令简单示例
2016/08/03 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
JavaScript中 DOM操作方法小结
2017/04/25 Javascript
关于foreach循环中遇到的问题小结
2017/05/08 Javascript
Angular2生命周期钩子函数的详细介绍
2017/07/10 Javascript
JavaScript实现旋转轮播图
2020/08/18 Javascript
详解基于node.js的脚手架工具开发经历
2019/01/28 Javascript
es6数值的扩展方法
2019/03/11 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
ES6中new Function()语法及应用实例分析
2020/02/19 Javascript
Python实现更改图片尺寸大小的方法(基于Pillow包)
2016/09/19 Python
Python 2与Python 3版本和编码的对比
2017/02/14 Python
Python标准库笔记struct模块的使用
2018/02/22 Python
Python使用MyQR制作专属动态彩色二维码功能
2019/06/04 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
2019/09/16 Python
pycharm内无法import已安装的模块问题解决
2020/02/12 Python
Jmeter HTTPS接口测试证书导入过程图解
2020/07/22 Python
采购内勤岗位职责
2013/12/10 职场文书
校园活动策划书范文
2014/01/10 职场文书
交通事故协议书范文
2014/04/16 职场文书
责任担保书范文
2014/05/21 职场文书
诚实守信演讲稿
2014/09/01 职场文书
物联网工程专业推荐信
2014/09/08 职场文书
学校教学管理制度
2015/08/06 职场文书
企业安全生产检查制度
2015/08/06 职场文书