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中实现字符串类型与字典类型相互转换的方法
Aug 18 Python
Django静态资源URL STATIC_ROOT的配置方法
Nov 08 Python
利用Python爬取可用的代理IP
Aug 18 Python
Python进阶-函数默认参数(详解)
May 18 Python
简述Python2与Python3的不同点
Jan 21 Python
Python实现查看系统启动项功能示例
May 10 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
Apr 15 Python
python向字符串中添加元素的实例方法
Jun 28 Python
如何用Python来理一理红楼梦里的那些关系
Aug 14 Python
Python单元测试工具doctest和unittest使用解析
Sep 02 Python
python flask搭建web应用教程
Nov 19 Python
Python实现名片管理系统
Feb 14 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实现框架(二)
2006/10/09 PHP
第四节--构造函数和析构函数
2006/11/16 PHP
UCenter 批量添加用户的php代码
2012/07/17 PHP
php中将数组转成字符串并保存到数据库中的函数代码
2013/09/29 PHP
php metaphone()函数的定义和用法
2016/05/15 PHP
php实现的数组转xml案例分析
2019/09/28 PHP
关于document.cookie的使用javascript
2010/10/29 Javascript
JavaScript中几个重要的属性(this、constructor、prototype)介绍
2013/05/19 Javascript
jquery子元素过滤选择器使用示例
2013/06/24 Javascript
获取非最后一列td值并将title设为该值的方法
2013/10/30 Javascript
JavaScript改变CSS样式的方法汇总
2015/05/07 Javascript
JS实现样式清新的横排下拉菜单效果
2015/10/09 Javascript
当jquery ajax遇上401请求的解决方法
2016/05/19 Javascript
js控制台输出的方法(详解)
2016/11/26 Javascript
详解本地Node.js服务器作为api服务器的解决办法
2017/02/28 Javascript
简单谈谈require模块化jquery和angular的问题
2017/06/23 jQuery
jQuery表单设置值的方法
2017/06/30 jQuery
koa中间件核心(koa-compose)源码解读分析
2020/06/15 Javascript
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
2017/07/30 Python
Python实现七彩蟒蛇绘制实例代码
2018/01/16 Python
python 每天如何定时启动爬虫任务(实现方法分享)
2018/05/21 Python
python 机器学习之支持向量机非线性回归SVR模型
2019/06/26 Python
Python全面分析系统的时域特性和频率域特性
2020/02/26 Python
详解CSS3中@media的实际使用
2015/08/04 HTML / CSS
资生堂美国官网:Shiseido美国
2016/09/02 全球购物
Luxplus荷兰:以会员价购买美容产品等,独家优惠
2019/08/30 全球购物
文明礼仪小标兵事迹
2014/01/12 职场文书
机械系毕业生求职信
2014/05/28 职场文书
新文化运动的基本口号
2014/06/21 职场文书
毕业生应聘求职信
2014/07/10 职场文书
道路交通事故赔偿协议书
2014/10/24 职场文书
毕业生爱心捐书倡议书
2015/04/27 职场文书
你知道哪几种MYSQL的连接查询
2021/06/03 MySQL
关于nginx 实现jira反向代理的问题
2021/09/25 Servers
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL