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中的yield使用方法
Feb 11 Python
Python实现去除代码前行号的方法
Mar 10 Python
Python如何实现文本转语音
Aug 08 Python
利用pyinstaller将py文件打包为exe的方法
May 14 Python
Tensorflow实现卷积神经网络的详细代码
May 24 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
Jun 11 Python
Python multiprocessing多进程原理与应用示例
Feb 28 Python
Pandas的read_csv函数参数分析详解
Jul 02 Python
Python操作远程服务器 paramiko模块详细介绍
Aug 07 Python
Python数据处理篇之Sympy系列(五)---解方程
Oct 12 Python
如何利用python检测图片是否包含二维码
Oct 15 Python
使用python生成大量数据写入es数据库并查询操作(2)
Sep 23 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整数取余返回负数的相关解决方法
2014/05/15 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
一个非常完美的读写ini格式的PHP配置类分享
2015/02/12 PHP
PHP缩略图生成和图片水印制作
2017/01/07 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
jQuery数组处理方法汇总
2011/06/20 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
js判断文本框剩余可输入字数的方法
2015/02/04 Javascript
angularJS 入门基础
2015/02/09 Javascript
Jqgrid之强大的表格插件应用
2015/12/02 Javascript
js无法获取到html标签的属性的解决方法
2016/07/26 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
jQuery select自动选中功能实现方法分析
2016/11/28 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
2017/01/16 Javascript
jQuery实现动态添加节点与遍历节点功能示例
2017/11/09 jQuery
js+css实现红包雨效果
2018/07/12 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
2018/08/16 Javascript
layui问题之自动滚动二级iframe页面到指定位置的方法
2019/09/18 Javascript
解决axios post 后端无法接收数据的问题
2019/10/29 Javascript
js实现简单五子棋游戏
2020/05/28 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
关于vue-cli3打包代码后白屏的解决方案
2020/09/02 Javascript
python数据类型_元组、字典常用操作方法(介绍)
2017/05/30 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
2018/03/19 Python
Python实现的从右到左字符串替换方法示例
2018/07/06 Python
Python使用type关键字创建类步骤详解
2019/07/23 Python
python3 assert 断言的使用详解 (区别于python2)
2019/11/27 Python
python实现控制台输出彩色字体
2020/04/05 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
HTML5实时语音通话聊天MP3压缩传输3KB每秒
2019/08/28 HTML / CSS
HTML5调用手机发短信和打电话功能
2020/04/29 HTML / CSS
uniapp+Html5端实现PC端适配
2020/07/15 HTML / CSS
公司食堂管理制度
2015/08/05 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书
剑指Offer之Java算法习题精讲二叉树的构造和遍历
2022/03/21 Java/Android
清空 Oracle 安装记录并重新安装
2022/04/26 Oracle