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实现简单的邮件发送客户端示例
Dec 23 Python
python 3.7.0 下pillow安装方法
Aug 27 Python
python 随机打乱 图片和对应的标签方法
Dec 14 Python
Python多项式回归的实现方法
Mar 11 Python
python之信息加密题目详解
Jun 26 Python
python实现多进程通信实例分析
Sep 01 Python
python的命名规则知识点总结
Oct 04 Python
Pandas DataFrame中的tuple元素遍历的实现
Oct 23 Python
wxPython实现绘图小例子
Nov 19 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
Apr 20 Python
python 实现 hive中类似 lateral view explode的功能示例
May 18 Python
浅谈Python数学建模之整数规划
Jun 23 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
2019年中国咖啡业现状与发展趋势
2021/03/04 咖啡文化
教你如何把一篇文章按要求分段
2006/10/09 PHP
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
php开发环境配置记录
2011/01/14 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
2013/12/24 PHP
PHP修改session_id示例代码
2014/01/08 PHP
php CI框架插入一条或多条sql记录示例
2014/07/29 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
10个php函数实用却不常见
2015/10/13 PHP
CI框架的安全性分析
2016/05/18 PHP
php文件上传类的分享
2017/07/06 PHP
PHP基于面向对象封装的分页类示例
2019/03/15 PHP
准确获得页面、窗口高度及宽度的JS
2006/11/26 Javascript
Extjs TimeField 显示正常时间格式的代码
2011/06/28 Javascript
JavaScript基础知识之数据类型
2012/08/06 Javascript
JS中的异常处理方法分享
2013/12/22 Javascript
DropDownList实现可输入可选择(两种版本可选)
2016/12/07 Javascript
微信小程序登录态控制深入分析
2017/04/12 Javascript
浅谈微信页面入口文件被缓存解决方案
2018/09/29 Javascript
Vue使用NProgress进度条的方法
2019/09/21 Javascript
JS+DIV实现拖动效果
2020/02/11 Javascript
[59:48]LGD vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
通过python爬虫赚钱的方法
2019/01/29 Python
Python实现的统计文章单词次数功能示例
2019/07/08 Python
python实现超市管理系统(后台管理)
2019/10/25 Python
python读写Excel表格的实例代码(简单实用)
2019/12/19 Python
深入浅析python的第三方库pandas
2020/02/13 Python
CSS3实现彩色进度条动画的示例
2020/10/29 HTML / CSS
美赞臣营养马来西亚旗舰店:Enfagrow马来西亚
2019/07/26 全球购物
城建学院毕业生自荐信
2014/01/31 职场文书
运动会通讯稿150字
2014/02/15 职场文书
三八妇女节活动主持词
2014/03/17 职场文书
毕业证代领委托书
2014/09/26 职场文书
学校总务处领导班子民主生活会对照检查材料思想汇报
2014/09/27 职场文书
警示教育片观后感
2015/06/17 职场文书
MySQL 分组查询的优化方法
2021/05/12 MySQL