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设计模式中单例模式的实现及在Tornado中的应用
Mar 02 Python
Python 3中的yield from语法详解
Jan 18 Python
pyhton列表转换为数组的实例
Apr 04 Python
python 巧用正则寻找字符串中的特定字符的位置方法
May 02 Python
用TensorFlow实现lasso回归和岭回归算法的示例
May 02 Python
华为校园招聘上机笔试题 扑克牌大小(python)
Apr 22 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
Jun 19 Python
python高斯分布概率密度函数的使用详解
Jul 10 Python
详解python中自定义超时异常的几种方法
Jul 29 Python
python正则爬取某段子网站前20页段子(request库)过程解析
Aug 10 Python
python argparse模块通过后台传递参数实例
Apr 20 Python
Keras自定义实现带masking的meanpooling层方式
Jun 16 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中日期加减法运算实现代码
2011/12/08 PHP
php数组去重复数据示例
2014/02/25 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
2016/04/01 PHP
php分页原理 分页代码 分页类制作教程
2016/09/23 PHP
thinkphp5引入公共部分header、footer的方法详解
2018/09/14 PHP
JavaScript 对象成员的可见性说明
2009/10/16 Javascript
JS下拉框内容左右移动效果的具体实现
2013/07/10 Javascript
js确认删除对话框效果的示例代码
2014/02/20 Javascript
javascript对象的使用和属性操作示例详解
2014/03/02 Javascript
js获取上传文件大小示例代码
2014/04/10 Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
2014/07/29 Javascript
jQuery 1.9移除了$.browser可以使用$.support来替代
2014/09/03 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
2016/11/26 Javascript
JavaScript中 this 指向问题深度解析
2017/02/21 Javascript
js精确的加减乘除实例
2017/11/14 Javascript
对vue中methods互相调用的方法详解
2018/08/30 Javascript
JS猜数字游戏实例讲解
2020/06/30 Javascript
JavaScript中while循环的基础使用教程
2020/08/11 Javascript
Nodejs在局域网配置https访问的实现方法
2020/10/17 NodeJs
Python标准库与第三方库详解
2014/07/22 Python
python中字典(Dictionary)用法实例详解
2015/05/30 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
Python根据指定日期计算后n天,前n天是哪一天的方法
2018/05/29 Python
python使用folium库绘制地图点击框
2018/09/21 Python
Python魔法方法详解
2019/02/13 Python
python 的topk算法实例
2020/04/02 Python
夏威夷灵感服装及配饰:Reyn Spooner
2018/09/18 全球购物
结构工程研究生求职信
2013/10/13 职场文书
工程师岗位职责规定
2014/02/26 职场文书
服务承诺书怎么写
2014/05/24 职场文书
八一建军节营销活动方案
2014/08/31 职场文书
2016年秋季开学典礼新闻稿
2015/11/25 职场文书
校运会班级霸气口号
2015/12/24 职场文书
如何给HttpServletRequest增加消息头
2021/06/30 Java/Android
Python实现Matplotlib,Seaborn动态数据图
2022/05/06 Python