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执行等待程序直到第二天零点的方法
Apr 23 Python
python使用reportlab实现图片转换成pdf的方法
May 22 Python
Python中关键字nonlocal和global的声明与解析
Mar 12 Python
pygame实现非图片按钮效果
Oct 29 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
Dec 11 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
Dec 13 Python
浅析python表达式4+0.5值的数据类型
Feb 26 Python
Python使用sqlite3模块内置数据库
May 07 Python
利用python下载scihub成文献为PDF操作
Jul 09 Python
详解python中GPU版本的opencv常用方法介绍
Jul 24 Python
Django restful framework生成API文档过程详解
Nov 12 Python
Python中相见恨晚的技巧
Apr 13 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
php中json_encode中文编码问题分析
2011/09/13 PHP
PHP简单实现文本计数器的方法
2016/04/28 PHP
PHP之图片上传类实例代码(加了缩略图)
2016/06/30 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
2020/03/18 PHP
JavaScript接口实现代码 (Interfaces In JavaScript)
2010/06/11 Javascript
extjs grid设置某列背景颜色和字体颜色的实现方法
2010/09/06 Javascript
dwz 如何去掉ajaxloading具体代码
2013/05/22 Javascript
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
2016/07/07 Javascript
针对JavaScript中this指向的简单理解
2016/08/26 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
原生JS实现图片网格式渐显、渐隐效果
2017/06/05 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
2018/08/07 Javascript
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
python str与repr的区别
2013/03/23 Python
Python冲顶大会 快来答题!
2018/01/17 Python
numpy给array增加维度np.newaxis的实例
2018/11/01 Python
使用python制作一个解压缩软件
2019/11/13 Python
HTML5 创建canvas元素示例代码
2014/06/04 HTML / CSS
html2canvas生成清晰的图片实现打印的示例代码
2019/09/30 HTML / CSS
Kate Spade美国官网:纽约新兴时尚品牌,以包包闻名于世
2017/11/09 全球购物
流行文化收藏品:Sideshow(DC漫画,星球大战,漫威)
2019/03/17 全球购物
ColourPop美国官网:卡拉泡泡,洛杉矶彩妆品牌
2019/04/28 全球购物
转党组织关系介绍信
2014/01/08 职场文书
见习期自我鉴定
2014/01/31 职场文书
技能比武方案
2014/05/21 职场文书
死亡赔偿协议书
2015/01/28 职场文书
新学期开学寄语2016
2015/12/04 职场文书
委托书范本格式
2019/04/18 职场文书
小程序wx.getUserProfile接口的具体使用
2021/06/02 Javascript
选购到合适的激光打印机
2022/04/21 数码科技
Linux中sftp常用命令整理
2022/06/28 Servers
Spring Boot实现文件上传下载
2022/08/14 Java/Android