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 smtplib模块发送SSL/TLS安全邮件实例
Apr 08 Python
Python使用win32com实现的模拟浏览器功能示例
Jul 13 Python
Python实现公历(阳历)转农历(阴历)的方法示例
Aug 22 Python
Python 判断 有向图 是否有环的实例讲解
Feb 01 Python
Python打印“菱形”星号代码方法
Feb 05 Python
python通过paramiko复制远程文件及文件目录到本地
Apr 30 Python
Python批量修改图片分辨率的实例代码
Jul 04 Python
Django中提供的6种缓存方式详解
Aug 05 Python
详解python 中in 的 用法
Dec 12 Python
python 通过手机号识别出对应的微信性别(实例代码)
Dec 22 Python
Python迭代器Iterable判断方法解析
Mar 16 Python
python反扒机制的5种解决方法
Feb 06 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
windows xp下安装pear
2006/12/02 PHP
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
PHP基本语法实例总结
2016/09/09 PHP
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
Jquery常用技巧收集整理篇
2010/11/14 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
2013/11/22 Javascript
JS去除字符串两端空格的简单实例
2013/12/27 Javascript
javascript常见用法总结
2014/05/22 Javascript
jQuery创建DOM元素实例解析
2015/01/19 Javascript
JavaScript中的函数嵌套使用
2015/06/04 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
利用Vue.js实现checkbox的全选反选效果
2017/01/18 Javascript
socket.io学习教程之基本应用(二)
2017/04/29 Javascript
js实现图片上传预览原理分析
2017/07/13 Javascript
解决ie img标签内存泄漏的问题
2017/10/13 Javascript
js读取本地文件的实例
2017/12/22 Javascript
Vue实现点击后文字变色切换方法
2018/02/11 Javascript
JavaScript使用ul中li标签实现删除效果
2019/04/15 Javascript
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
解决layui弹框失效的问题
2019/09/09 Javascript
vue实现滚动鼠标滚轮切换页面
2020/12/13 Vue.js
python在windows下实现备份程序实例
2014/07/04 Python
用Python的Tornado框架结合memcached页面改善博客性能
2015/04/24 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
2016/12/10 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
CSS3新属性transition-property transform box-shadow实例学习
2013/06/06 HTML / CSS
ASICS印度官方网站:日本专业运动品牌
2020/06/20 全球购物
介绍一下gcc特性
2012/01/20 面试题
德尔福集团DELPHI的笔试题
2012/02/22 面试题
专业实习自我鉴定
2013/10/29 职场文书
《木笛》教学反思
2014/03/01 职场文书
我的长生果教学反思
2014/04/28 职场文书
人民调解员先进事迹材料
2014/05/08 职场文书
OpenCV-Python实现人脸磨皮算法
2021/06/07 Python