Python中函数的参数传递与可变长参数介绍


Posted in Python onJune 30, 2015

1.Python中也有像C++一样的默认缺省函数

def foo(text,num=0):

    print text,num
foo("asd")  #asd 0

foo("def",100)  #def 100

定义有默认参数的函数时,这些默认值参数 位置必须都在非默认值参数后面。

调用时提供默认值参数值时,使用提供的值,否则使用默认值。

2.Python可以根据参数名传参数

def foo(ip,port):

    print "%s:%d" % (ip,port)
foo("192.168.1.0",3306) #192.168.1.0:3306

foo(port=8080,ip="127.0.0.1")   #127.0.0.1:8080

第4行,没有指定参数名,按照顺序传参数。

第5行,指定参数名,可以按照参数名称传参数。

3.可变长度参数

#coding:utf-8       #设置python文件的编码为utf-8,这样就可以写入中文注释

def foo(arg1,*tupleArg,**dictArg):

    print "arg1=",arg1  #formal_args

    print "tupleArg=",tupleArg  #()

    print "dictArg=",dictArg    #[]

foo("formal_args")

上面函数中的参数,tupleArg前面“*”表示这个参数是一个元组参数,从程序的输出可以看出,默认值为();dicrtArg前面有“**”表示这个字典参数(键值对参数)。可以把tupleArg、dictArg看成两个默认参数。多余的非关键字参数,函数调用时被放在元组参数tupleArg中;多余的关键字参数,函数调用时被放字典参数dictArg中。

下面是可变长参数的一些用法:

#coding:utf-8       #设置python文件的编码为utf-8,这样就可以写入中文注释

def foo(arg1,arg2="OK",*tupleArg,**dictArg):

    print "arg1=",arg1

    print "arg2=",arg2

    for i,element in enumerate(tupleArg):

        print "tupleArg %d-->%s" % (i,str(element))

    for  key in dictArg:

        print "dictArg %s-->%s" %(key,dictArg[key])
myList=["my1","my2"]

myDict={"name":"Tom","age":22}

foo("formal_args",arg2="argSecond",a=1)

print "*"*40

foo(123,myList,myDict)

print "*"*40

foo(123,rt=123,*myList,**myDict)

输出为:

Python中函数的参数传递与可变长参数介绍

从上面的程序可以看出:

(1)如代码第16行。

 参数中如果使用“*”元组参数或者“**”字典参数,这两种参数应该放在参数列表最后。并且“*”元组参数位于“**”字典参数之前。

 关键字参数rt=123,因为函数foo(arg1,arg2="OK",*tupleArg,**dictArg)中没有rt参数,所以最后也归到字典参数中。

(2)如代码第14行。

元组对象前面如果不带“*”、字典对象如果前面不带“**”,则作为普通的对象传递参数。

多余的普通参数,在foo(123,myList,myDict)中,123赋给参数arg1,myList赋给参数arg2,多余的参数myDict默认为元组赋给myList。

Python 相关文章推荐
Python实现简单截取中文字符串的方法
Jun 15 Python
使用Python的urllib和urllib2模块制作爬虫的实例教程
Jan 20 Python
使用Python编写基于DHT协议的BT资源爬虫
Mar 19 Python
详解python上传文件和字符到PHP服务器
Nov 24 Python
分享6个隐藏的python功能
Dec 07 Python
使用Python调取任意数字资产钱包余额功能
Aug 15 Python
FFrpc python客户端lib使用解析
Aug 24 Python
Python如何使用Gitlab API实现批量的合并分支
Nov 27 Python
浅谈python之自动化运维(Paramiko)
Jan 31 Python
opencv+python实现均值滤波
Feb 19 Python
Python confluent kafka客户端配置kerberos认证流程详解
Oct 12 Python
python实现web邮箱扫描的示例(附源码)
Mar 30 Python
python实现文件快照加密保护的方法
Jun 30 #Python
Python实现高效求解素数代码实例
Jun 30 #Python
python实现DES加密解密方法实例详解
Jun 30 #Python
python实现的系统实用log类实例
Jun 30 #Python
python实现在windows服务中新建进程的方法
Jun 30 #Python
python实现线程池的方法
Jun 30 #Python
python实现的简单FTP上传下载文件实例
Jun 30 #Python
You might like
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
php+mysql结合Ajax实现点赞功能完整实例
2015/01/30 PHP
php中namespace use用法实例分析
2016/01/22 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
2016/07/20 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
2017/02/28 PHP
利用PHP判断是否是连乘数字串的方法示例
2017/07/03 PHP
使用PHP+MySql实现微信投票功能实例代码
2017/09/29 PHP
用js实现控制内容的向上向下滚动效果
2007/06/26 Javascript
用ASP将SQL搜索出来的内容导出为TXT的代码
2007/07/27 Javascript
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
2009/12/09 Javascript
input 输入框内的输入事件详细分析
2010/03/17 Javascript
SlideView 图片滑动(扩展/收缩)展示效果
2010/08/01 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
2013/11/21 Javascript
JavaScript获取按钮所在form表单id的方法
2015/04/02 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
2016/05/16 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
浅谈Angular中ngModel的$render
2016/10/24 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
2017/03/01 Javascript
vue路由嵌套的SPA实现步骤
2017/11/06 Javascript
Vue 让元素抖动/摆动起来的实现代码
2018/05/31 Javascript
ionic2.0双击返回键退出应用
2019/09/17 Javascript
nodejs环境使用Typeorm连接查询Oracle数据
2019/12/05 NodeJs
在Python中操作字典之setdefault()方法的使用
2015/05/21 Python
用Python实现随机森林算法的示例
2017/08/24 Python
python调用虹软2.0第三版的具体使用
2019/02/22 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
基于python检查SSL证书到期情况代码实例
2020/04/04 Python
Theory美国官网:后现代都市风时装品牌
2018/05/09 全球购物
护理学毕业生自荐信
2013/10/02 职场文书
小学生2014国庆节演讲稿:祖国在我心中
2014/09/21 职场文书
违反交通安全法检讨书
2014/10/24 职场文书
英文慰问信
2015/02/14 职场文书
Golang 实现获取当前函数名称和文件行号等操作
2021/05/08 Golang
Python中第三方库Faker的使用详解
2022/04/02 Python