Python函数中定义参数的四种方式


Posted in Python onNovember 30, 2014

Python中函数参数的定义主要有四种方式:

1. F(arg1,arg2,…)

这是最常见的定义方式,一个函数可以定义任意个参数,每个参数间用逗号分割,用这种方式定义的函数在调用的的时候也必须在函数名后的小括号里提供个数相等
的值(实际参数),而且顺序必须相同,也就是说在这种调用方式中,形参和实参的个数必须一致,而且必须一一对应,也就是说第一个形参对应这第一个实参。例如:

def a(x,y):print x,y

调用该函数,a(1,2)则x取1,y取2,形参与实参相对应,如果a(1)或者a(1,2,3)则会报错。

2. F(arg1,arg2=value2,…)

这种方式就是第一种的改进版,提供了默认值,例如:

def a(x,y=3):print x,y

调用该函数,a(1,2)同样还是x取1,y取2,但是如果a(1),则不会报错了,这个时候x还是1,y则为默认的3。上面这俩种方式,还可以更换参数位置,比如a(y=4,x=3)用这种形式也是可以的。

3. F(*arg1)

上面两种方式是有多少个形参,就传进去多少个实参,但有时候会不确定有多少个参数,则此时第三种方式就比较有用,它以一个*加上形参名的方式来表示这个函
数的实参个数不定,可能为0个也可能为n个。注意一点是,不管有多少个,在函数内部都被存放在以形参名为标识符的元组中。

def a(*x):print x
>>> a(1,2,3)
(1, 2, 3)
>>> a(x=1,y=2,z=3)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: a() got an unexpected keyword argument 'x'

4. F(**arg1)

形参名前加两个*表示,参数在函数内部将被存放在以形式名为标识符的dictionary中,这时调用函数的方法则需要采用arg1=value1,arg2=value2这样的形式。

def a(**x):print x
>>> a(x=1,y=2,z=3)
{'y': 2, 'x': 1, 'z': 3} #存放在字典中
>>> a(1,2,3) #这种调用则报错
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: a() takes exactly 0 arguments (3 given)
Python 相关文章推荐
Python深入学习之闭包
Aug 31 Python
Python实现的数据结构与算法之快速排序详解
Apr 22 Python
python简单实现获取当前时间
Aug 27 Python
Python实现解析Bit Torrent种子文件内容的方法
Aug 29 Python
浅谈python 线程池threadpool之实现
Nov 17 Python
python实现拓扑排序的基本教程
Mar 11 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
Jul 04 Python
浅谈Python里面小数点精度的控制
Jul 16 Python
Python3连接Mysql8.0遇到的问题及处理步骤
Feb 17 Python
python根据字典的键来删除元素的方法
Aug 16 Python
Python测试框架:pytest学习笔记
Oct 20 Python
python实现股票历史数据可视化分析案例
Jun 10 Python
Python 自动补全(vim)
Nov 30 #Python
给Python IDLE加上自动补全和历史功能
Nov 30 #Python
让 python 命令行也可以自动补全
Nov 30 #Python
Python lambda和Python def区别分析
Nov 30 #Python
Python内置函数之filter map reduce介绍
Nov 30 #Python
Python Queue模块详解
Nov 30 #Python
Python socket C/S结构的聊天室应用实现
Nov 30 #Python
You might like
php统计文件大小,以GB、MB、KB、B输出
2011/05/29 PHP
php curl的深入解析
2013/06/02 PHP
php创建基本身份认证站点的方法详解
2013/06/08 PHP
使用Discuz关键词服务器实现PHP中文分词
2014/03/11 PHP
微信公众平台开发之天气预报功能
2015/08/31 PHP
php安装dblib扩展,连接mssql的具体步骤
2017/03/02 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
javascript 获取元素样式必杀技
2014/05/04 Javascript
node.js中的buffer.fill方法使用说明
2014/12/14 Javascript
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
JavaScript对象数组排序实例方法浅析
2016/06/15 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
微信小程序实现全国机场索引列表
2018/01/31 Javascript
微信小程序实现YDUI的ScrollNav组件
2018/02/02 Javascript
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
vue框架搭建之axios使用教程
2018/07/11 Javascript
Vuejs中的watch实例详解(监听者)
2020/01/05 Javascript
JavaScript变量Dom对象的所有属性
2020/04/30 Javascript
[03:01]完美盛典趣味短片 DOTA2年度最佳&拉胯英雄
2019/12/07 DOTA
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
Python json模块与jsonpath模块区别详解
2020/03/05 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
2021/01/05 Python
基于CSS3制作立体效果导航菜单
2016/01/12 HTML / CSS
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
Styleonme中文网:韩国高档人气品牌
2017/06/21 全球购物
Ben Sherman官方网站:英国男装品牌
2019/10/22 全球购物
亿企通软件测试面试题
2012/04/10 面试题
饮料业务员岗位职责
2013/12/15 职场文书
少年闰土教学反思
2014/02/22 职场文书
手机银行营销方案
2014/03/14 职场文书
微笑服务标语
2014/06/24 职场文书
公司离职证明标准样本
2014/10/05 职场文书
个人自荐书范文
2015/03/09 职场文书
MySQL 条件查询的常用操作
2022/04/28 MySQL