python 不定参数_人生苦短,我学不会Python。——函数中不定长参数的写法
定义函数
我们可以定义一个实现自己想要的功能的函数。Python定义函数以def开头,定义函数基本格式如下:
def 函数名 (参数列表):"函数_文档字符串"函数体
return 表达式
基于上述格式,下面对函数定义的规则进行说明:
- 函数代码块以def开头,后面紧跟的是函数名和圆括号()。
- 函数名的命名规则跟变量的名字是一样的,即只能是字母、数字和下划线的任何组合,但不能以数字开头,并且不能跟关键字重名。
- 函数的参数必须放在圆括号中。
- 函数的第1行语句可以选择性地使用文档字符串来存放函数说明。
- return表达式结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回None。
需注意的是,如果参数列表包含多个参数,默认情况下,参数值和参数名称是按参数声明中定义的顺序匹配的。
不定长参数
通常在定义一个函数时,若希望函数能够处理的参数个数比当初定义的参数个数多,此时可以在函数中使用不定长参数。其基本的语法格式如下:
def 函数名([formal_args, ] *args, **kwargs):"函数_文档字符串"函数体return 表达式
上述格式中,函数共有3个参数。其中,formal_args作为传统定义的参数,*args和**kwargs为不定长参数。当调用函数的时候,函数传入的参数个数会优先匹配formal_args参数的个数。如果传入的参数个数和formal_args参数的个数相同,不定长参数会返回空的元组或字典;如果传入参数的个数比formal_args参数的个数多,可以分为如下两种情况:
加了*的变量args会存放所有未命名的变量参数,args为元组;而加**的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典。如果传入的参数指定了名称,如m = 1,那么**kwargs会以字典的形式存放这些被命名的参数,如{m : 1}。
为了大家更好的理解,先通过一个简单的案例进行演示。
def test(a,b,*args):print(a)print(b)print(args)test(11,22)
1~4行代码定义了test函数。其中,args为不定长参数。当在第5行中调用test函数时,如果传入11和22这两个数,那么这两个数会从左向右依次匹配test函数定义时的参数a和b,此时,args参数没有接收到数据,所以为一个空元组。
运行结果:
如果在调用test函数时,传入多个参数(这里指的是大于2个参数),情况又是怎么样的呢?
def test(a,b,*args):print(a)print(b)print(args)test(11,22,33,44,55,66,77,88,99)
运行结果:
如果在列表末尾使用**表示参数,代码如下:
def test(a,b,*args,**kwargs):print(a)print(b)print(args)print(kwargs)test(11,22,33,44,55,66,77,88,99)
运行结果:
从上述结果可知,如果再调用test函数时传入多个数值,这些数值会从左向右依次匹配函数test定义时的参数,如果传统的参数匹配够了,多余的参数会组成一个元组,和不定长参数args进行匹配。
思考一下,在调用函数时,什么情况下传入的数据会匹配参数kwargs呢?将前面调用函数的代码进行修改:
def test(a,b,*args,**kwargs):print(a)print(b)print(args)print(kwargs)test(11,22,33,44,55,66,77,m = 88,n = 99)
运行结果:
综上所述,不定长参数传递的个数可以大于定义函数时的参数数目。如果传入的参数没有名字,那么传入的值给args变量;如果传入的参数有名字,那么传入的值会给kwargs变量。
人生苦短,我用Python。
Life is short, use Python.
python 不定参数_人生苦短,我学不会Python。——函数中不定长参数的写法相关推荐
- python词云图_人生苦短我用Python——词云图的绘制
1.wordcloud库的安装 wordcloud库可以绘制词云,安装wordcloud库: pip install wordcloud 2.wordcloud库的介绍 wordcloud库的基本使用 ...
- python ssl recv参数_如何在paramiko.recv函数中接收大输出?
我需要从paramiko中的.recv函数接收完整的输出.我试图增加nbyte数,但在我看来,我认为这不是正确的方法.脚本的主要用途是在同一会话中自动列出命令. 我这里的主要问题是我不能从shell接 ...
- python关键字参数必须位于位置参数之前_python函数中的参数(关键字参数,默认参数,位置参数,不定长参数)...
默认参数:定义函数的时候给定变量一个默认值. def num(age=1): 位置参数:调用函数的时候根据定义函数时的形参位置和实参位置进行引用. 关键字参数:如果定义的函数中含有关键字参数,调用函数 ...
- python 函数调用 不允许关键字参数_你所不知道的Python|函数参数的演进之路
原标题:你所不知道的Python|函数参数的演进之路 函数参数处理机制是Python中一个非常重要的知识点,随着Python的演进,参数处理机制的灵活性和丰富性也在不断增加,使得我们不仅可以写出简化的 ...
- python获取命令行参数_【整理】Python中如何获得并处理命令行参数
运行Python脚本时,时常需要从命令行中传递一些参数到Python程序中,但是如何获得相应的传递进来的参数,以及如何解析这些参数,是很多人,包括最开始的我,所遇到的问题. 下面,就对此总结一下: 先 ...
- python中打开文件时只允许写入的模式是_在open函数中访问模式参数使用()表示打开一个文件只用于写入。(4.0分)_学小易找答案...
[单选题]溢流坝属于( ) [单选题]在重力坝的底部沿坝轴线方向设置大尺寸的空腔,即为( ) [单选题]模式()的用途是打开一个文件用于追加.如果该文件已存在,文件指针将会放在文件的结尾.(4.0分) ...
- 人生苦短我用python壁纸_人生苦短我用Python分分钟下载知乎美图给你看
为什么说"人生苦短,我用python"? 为什么说人生苦短我用python Question 1 Python是什么 2 人们为什么用Python 3 Python是脚本语言吗 P ...
- 编程猫python笔试题_假如高考考python编程,这些题目你会几个呢?
Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定.它包含了一组完善而且容易理 ...
- python编程基础_月隐学python第2课
python编程基础_月隐学python第2课 学习目标 掌握变量的输入和输出 掌握数据类型的基本概念 掌握算数运算 1.变量的输入和输出 1.1 变量输入 使用input输入 input用于输入数据 ...
- [转载] 详细介绍Python函数中的默认参数
参考链接: Python函数中的默认参数 详细介绍Python函数中的默认参数 import datetime as dt def log_time(message, time=None): if t ...
最新文章
- ip地址开头结尾不能为0
- python3编码和解码_python3的url编码和解码,自定义gbk、utf-8的例子
- maven netty 配置_SpringBoot整合Netty(附源码)
- Android中DatePicker日期选择器的使用和获取选择的年月日
- 获取ntoskrnl的基址
- Oracle 创建主键自增表
- leetcode 525. Contiguous Array | 525. 连续数组(Java)
- jMeter Transaction Controller 学习笔记
- 如何计算机械人工作量,修订后太原理工大学本科教学工作量计算办法
- 蓝桥杯 基础练习 数的读法
- 【Python笔记】datetime 模块用法
- 运行中的linux备份系统盘,怎样使用ghost对linux进行系统备份?
- Eclipse srever起来时,时间超过45s。
- linux中unzip命令无法使用解决方法
- gazebo中计算理想相机模型的fx fy
- PAT 1082 射击比赛
- Android 系统应用开发实战
- 关于H5请求数据报跨域问题记录
- 扫码枪回车键条码_条码扫描枪怎么设置换行?
- MAX31865模块PT100两线制测温
热门文章
- android编译modem,android modem调试的一点点心得
- 创建font_使用CSS3 CubicBezier创建动画链接悬停效果
- 富文本编辑器中空格转化为a_熙态农业:富硒鸡蛋有什么营养价值?
- en60204标准_工业机械一般办理CE认证的标准
- 纸板怎么切割光滑_现有的切割机如何选择呢?进来看看就清楚了
- ftp linux 服务器 麒麟_麒麟系统安装ftp
- 鸢尾花分类_基于鸢尾花(iris)数据集的逻辑回归分类实践
- android华为指纹开发_2020指纹芯片行业市场调研分析报告
- linux中脚本循环语句,Shell脚本循环语句
- 校园网未能找到pppoe服务器6,校园网PPPOE接入认证系统的研究与实现.doc