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 当前全局变量和入口参数的所有属性
Jul 01 Python
Python实现mysql数据库更新表数据接口的功能
Nov 19 Python
Python 在字符串中加入变量的实例讲解
May 02 Python
在python中pandas读文件,有中文字符的方法
Dec 12 Python
判断python对象是否可调用的三种方式及其区别详解
Jan 31 Python
python中利用matplotlib读取灰度图的例子
Dec 07 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
Mar 02 Python
python3 自动打印出最新版本执行的mysql2redis实例
Apr 09 Python
python的launcher用法知识点总结
Aug 07 Python
Pytorch之Tensor和Numpy之间的转换的实现方法
Sep 03 Python
python3判断IP地址的方法
Mar 04 Python
PYTHON使用Matplotlib去实现各种条形图的绘制
Mar 22 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 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
hadoop中一些常用的命令介绍
2013/06/19 PHP
解析用PHP实现var_export的详细介绍
2013/06/20 PHP
6种php上传图片重命名的方法实例
2013/11/04 PHP
php更新修改excel中的内容实例代码
2014/02/26 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
2016/10/14 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
TP5多入口设置实例讲解
2020/12/15 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
CL vs ForZe BO5 第一场 2.13
2021/03/10 DOTA
点击表单提交时出现jQuery没有权限的解决方法
2014/07/23 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
2015/08/31 Javascript
JavaScript模拟push
2016/03/06 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
概述jQuery的元素筛选
2016/11/23 Javascript
微信小程序(三):网络请求
2017/01/13 Javascript
详解用node-images 打造简易图片服务器
2017/05/08 Javascript
nodejs动态创建二维码的方法
2017/08/12 NodeJs
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
解决Vue2.0中使用less给元素添加背景图片出现的问题
2018/09/03 Javascript
小程序测试后台服务的方法(ngrok)
2019/03/08 Javascript
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
2019/04/04 jQuery
vue自定义正在加载动画的例子
2019/11/14 Javascript
基于js实现逐步显示文字输出代码实例
2020/04/02 Javascript
vue 清空input标签 中file的值操作
2020/07/21 Javascript
[01:11]辉夜杯战队访谈宣传片—CDEC.Y
2015/12/26 DOTA
Python基于递归算法实现的走迷宫问题
2017/08/04 Python
Django之提交表单与前后端交互的方法
2019/07/19 Python
浅析python表达式4+0.5值的数据类型
2020/02/26 Python
python 给图像添加透明度(alpha通道)
2020/04/09 Python
Pycharm IDE的安装和使用教程详解
2020/04/30 Python
Python基于Faker假数据构造库
2020/11/30 Python
Molton Brown美国官网:奢华美容、香水、沐浴和身体护理
2020/09/02 全球购物
2017寒假社会实践心得体会范文
2016/01/14 职场文书
vue-cli4.5.x快速搭建项目
2021/05/30 Vue.js