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使用socket进行简单网络连接的方法
Apr 29 Python
python MySQLdb Windows下安装教程及问题解决方法
May 09 Python
基于Python 的进程管理工具supervisor使用指南
Sep 18 Python
Python正则简单实例分析
Mar 21 Python
使用python实现接口的方法
Jul 07 Python
Python3中_(下划线)和__(双下划线)的用途和区别
Apr 26 Python
python数据预处理之数据标准化的几种处理方式
Jul 17 Python
python tkinter组件摆放方式详解
Sep 16 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
Dec 27 Python
Python3和PyCharm安装与环境配置【图文教程】
Feb 14 Python
浅谈python 中的 type(), dtype(), astype()的区别
Apr 09 Python
基于selenium及python实现下拉选项定位select
Jul 22 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
解密ThinkPHP3.1.2版本之模板继承
2014/06/19 PHP
php中curl使用指南
2015/02/05 PHP
php获取Google机器人访问足迹的方法
2015/04/15 PHP
PNGHandler-借助JS让PNG图在IE下实现透明(包括背景图)
2007/08/31 Javascript
基于jquery ajax 用户无刷新登录方法详解
2012/04/28 Javascript
Jquery判断$(&quot;#id&quot;)获取的对象是否存在的方法
2013/09/25 Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
2014/05/07 Javascript
一款由jquery实现的整屏切换特效
2014/09/15 Javascript
JQuery选择器绑定事件及修改内容的方法
2015/01/23 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
2015/09/16 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
AngularJS学习笔记之依赖注入详解
2016/05/16 Javascript
详解JavaScript中this关键字的用法
2016/05/26 Javascript
vue 登录滑动验证实现代码
2018/08/24 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
原生js实现each方法实例代码详解
2019/05/27 Javascript
浅谈对于“不用setInterval,用setTimeout”的理解
2019/08/28 Javascript
NodeJS有难度的面试题(能答对几个)
2019/10/09 NodeJs
使用vuex较为优雅的实现一个购物车功能的示例代码
2019/12/09 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
解决vue一个页面中复用同一个echarts组件的问题
2020/07/19 Javascript
鸿蒙系统中的 JS 开发框架
2020/09/18 Javascript
vue中路由跳转不计入history的操作
2020/09/21 Javascript
Python函数式编程指南(四):生成器详解
2015/06/24 Python
将字典转换为DataFrame并进行频次统计的方法
2018/04/08 Python
Python实现E-Mail收集插件实例教程
2019/02/06 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
2019/08/23 Python
Python爬虫程序架构和运行流程原理解析
2020/03/09 Python
Python3爬虫带上cookie的实例代码
2020/07/28 Python
详解Python爬虫爬取博客园问题列表所有的问题
2021/01/18 Python
Betsey Johnson官网:妖娆可爱的连衣裙及鞋子、手袋和配件
2016/12/30 全球购物
阿迪达斯英国官方网站:adidas英国
2019/08/13 全球购物
普罗米修斯教学反思
2014/02/06 职场文书
房贷工资证明范本
2015/06/12 职场文书
golang语言指针操作
2022/04/14 Golang