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中用datetime包进行对时间的一些操作
Jun 23 Python
Python3.4编程实现简单抓取爬虫功能示例
Sep 14 Python
python基础之包的导入和__init__.py的介绍
Jan 08 Python
基于python的多进程共享变量正确打开方式
Apr 28 Python
Linux CentOS Python开发环境搭建教程
Nov 28 Python
python3.6 如何将list存入txt后再读出list的方法
Jul 02 Python
用Python从0开始实现一个中文拼音输入法的思路详解
Jul 20 Python
python 初始化一个定长的数组实例
Dec 02 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
Dec 18 Python
Pytorch maxpool的ceil_mode用法
Feb 18 Python
利用Python将图片中扭曲矩形的复原
Sep 07 Python
python实现图片素描效果
Sep 26 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
Apache2 httpd.conf 中文版
2006/12/06 PHP
php join函数应用
2011/05/04 PHP
解析PHP留言本模块主要功能的函数说明(代码可实现)
2013/06/25 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
PHP的文件操作与算法实现的面试题示例
2015/08/10 PHP
js小技巧--自动隐藏红叉叉
2007/08/13 Javascript
javascript计时器事件使用详解
2014/01/07 Javascript
javascript实现类似百度分享功能的方法
2015/07/27 Javascript
JavaScript中输出信息的方法(信息确认框-提示输入框-文档流输出)
2016/06/12 Javascript
vue实现添加标签demo示例代码
2017/01/21 Javascript
设置cookie指定时间失效(实例代码)
2017/05/28 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
js中数组常用方法总结(推荐)
2019/04/09 Javascript
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
2020/11/11 Javascript
[00:35]可解锁地面特效
2018/12/20 DOTA
详解Python爬虫的基本写法
2016/01/08 Python
Python 字符串大小写转换的简单实例
2017/01/21 Python
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
2017/02/13 Python
Python引用计数操作示例
2018/08/23 Python
Django 反向生成url实例详解
2019/07/30 Python
python函数不定长参数使用方法解析
2019/12/14 Python
python 在sql语句中使用%s,%d,%f说明
2020/06/06 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
2020/07/18 Python
CSS3 网页下拉菜单代码解释 中文翻译
2010/02/27 HTML / CSS
如何查看浏览器对html5的支持情况
2020/12/15 HTML / CSS
美国最大的宠物用品零售商:PetSmart
2016/11/14 全球购物
彪马加拿大官网:PUMA加拿大
2018/10/04 全球购物
shell程序中如何注释
2012/01/28 面试题
责任书格式
2015/01/29 职场文书
罗马假日观后感
2015/06/08 职场文书
小学中队委竞选稿
2015/11/20 职场文书
python-opencv 中值滤波{cv2.medianBlur(src, ksize)}的用法
2021/06/05 Python
通过Qt连接OpenGauss数据库的详细教程
2021/06/23 PostgreSQL
Redis Cluster 集群搭建你会吗
2021/08/04 Redis