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的迭代器和生成器
Jul 29 Python
python常用函数详解
Sep 13 Python
Python中强大的命令行库click入门教程
Dec 26 Python
Python之py2exe打包工具详解
Jun 14 Python
Python 中pandas.read_excel详细介绍
Jun 23 Python
python实现批量修改图片格式和尺寸
Jun 07 Python
Python实现 PS 图像调整中的亮度调整
Jun 28 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
Jul 23 Python
Django如何简单快速实现PUT、DELETE方法
Jul 24 Python
python3实现用turtle模块画一棵随机樱花树
Nov 21 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
Jun 23 Python
Ubuntu16安装Python3.9的实现步骤
Dec 15 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
利用文件属性结合Session实现在线人数统计
2006/10/09 PHP
Blitz templates 最快的PHP模板引擎
2010/04/06 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
2011/01/17 PHP
easyui的tabs update正确用法分享
2014/03/21 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
js传中文参数controller里获取参数乱码问题解决方法
2014/01/03 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
javascript实现一个网页加载进度loading
2017/01/04 Javascript
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
2017/07/10 jQuery
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
浅谈vue-cli加载不到dev-server.js的解决办法
2017/11/24 Javascript
Node.js Buffer用法解读
2018/05/18 Javascript
用vue-cli开发vue时的代理设置方法
2018/09/20 Javascript
jQuery实现网页拼图游戏
2020/04/22 jQuery
js实现简单掷骰子小游戏
2019/10/24 Javascript
详解React的回调渲染模式
2020/09/10 Javascript
[05:26]TI10典藏宝瓶套装外观展示
2020/07/03 DOTA
讲解Python中运算符使用时的优先级
2015/05/14 Python
Python实现批量读取word中表格信息的方法
2015/07/30 Python
全面了解python中的类,对象,方法,属性
2016/09/11 Python
Python 爬虫学习笔记之单线程爬虫
2016/09/21 Python
使用python读取txt文件的内容,并删除重复的行数方法
2018/04/18 Python
Python安装与基本数据类型教程详解
2019/05/29 Python
Python使用type关键字创建类步骤详解
2019/07/23 Python
教学大赛获奖感言
2014/01/15 职场文书
秘书英文求职信
2014/04/16 职场文书
机械操作工岗位职责
2014/08/08 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
医院反腐倡廉演讲稿
2014/09/16 职场文书
物业管理委托协议(2篇)
2014/09/23 职场文书
2014年教育实习工作总结
2014/11/22 职场文书
2015年幼儿园学期工作总结
2015/05/22 职场文书
初一数学教学反思
2016/02/17 职场文书
MySQL数据库必备之条件查询语句
2021/10/15 MySQL
vue动态绑定style样式
2022/04/20 Vue.js