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实现的将文件每一列写入列表功能示例【测试可用】
Mar 19 Python
Python button选取本地图片并显示的实例
Jun 13 Python
解决Python内层for循环如何break出外层的循环的问题
Jun 24 Python
python 动态调用函数实例解析
Oct 21 Python
pytorch 实现cross entropy损失函数计算方式
Jan 02 Python
Python实现bilibili时间长度查询的示例代码
Jan 14 Python
python关于变量名的基础知识点
Mar 03 Python
python中sort sorted reverse reversed函数的区别说明
May 11 Python
PyQt5实现简单的计算器
May 30 Python
Pycharm github配置实现过程图解
Oct 13 Python
matlab xlabel位置的设置方式
May 21 Python
Elasticsearch 聚合查询和排序
Apr 19 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包含文件函数include、include_once、require、require_once区别总结
2014/04/05 PHP
php密码生成类实例
2014/09/24 PHP
PHP常用的小程序代码段
2015/11/14 PHP
PHP基于openssl实现的非对称加密操作示例
2019/01/11 PHP
PHP设计模式(四)原型模式Prototype实例详解【创建型】
2020/05/02 PHP
javascript 一个自定义长度的文本自动换行的函数
2007/08/19 Javascript
JSChart轻量级图形报表工具(内置函数中文参考)
2010/10/11 Javascript
HTML复选框和单选框 checkbox和radio事件介绍
2012/12/12 Javascript
jQuery下实现等待指定元素加载完毕(可改成纯js版)
2013/07/11 Javascript
JavaScript设计模式之外观模式介绍
2014/12/28 Javascript
Javascript HTML5 Canvas实现的一个画板
2020/04/12 Javascript
javascript如何定义对象数组
2016/06/07 Javascript
js控制li的隐藏和显示实例代码
2016/10/15 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
2017/07/03 Javascript
vue填坑之webpack run build 静态资源找不到的解决方法
2018/09/03 Javascript
angularjs使用div模拟textarea文本框的方法
2018/10/02 Javascript
JavaScript中构造函数与原型链之间的关系详解
2019/02/25 Javascript
vue实现跨域的方法分析
2019/05/21 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解
2020/04/29 Javascript
解决基于 keep-alive 的后台多级路由缓存问题
2020/12/23 Javascript
[06:42]DOTA2每周TOP10 精彩击杀集锦vol.1
2014/06/25 DOTA
go语言计算两个时间的时间差方法
2015/03/13 Python
Python简明入门教程
2015/08/04 Python
在双python下设置python3为默认的方法
2018/10/31 Python
手把手教你使用Python创建微信机器人
2019/04/29 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
pyftplib中文乱码问题解决方案
2020/01/11 Python
细说CSS3中的选择符
2008/10/17 HTML / CSS
美国地毯购买网站:Rugs USA
2019/02/23 全球购物
流行文化收藏品:Sideshow(DC漫画,星球大战,漫威)
2019/03/17 全球购物
模具毕业生推荐信
2014/02/15 职场文书
写求职信有什么意义
2014/02/17 职场文书
信息技术毕业生自荐信范文
2014/03/13 职场文书
有子女的离婚协议书怎么写(范本)
2014/09/29 职场文书
挂职锻炼个人总结
2015/03/05 职场文书