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 文件与目录操作
Dec 24 Python
浅谈机器学习需要的了解的十大算法
Dec 15 Python
python的concat等多种用法详解
Nov 28 Python
浅析python3字符串格式化format()函数的简单用法
Dec 07 Python
通过cmd进入python的实例操作
Jun 26 Python
python实现QQ邮箱发送邮件
Mar 06 Python
python中线程和进程有何区别
Jun 17 Python
keras K.function获取某层的输出操作
Jun 29 Python
浅析python 通⽤爬⾍和聚焦爬⾍
Sep 28 Python
Python通过队列来实现进程间通信的示例
Oct 14 Python
利用python制作拼图小游戏的全过程
Dec 04 Python
python实现语音常用度量方法的代码详解
May 25 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生成静态页面教程
2012/01/10 PHP
php中DOMElement操作xml文档实例演示
2013/03/26 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
php实现图片上传、剪切功能
2016/05/07 PHP
用js查找法实现当前栏目的高亮显示的代码
2007/11/24 Javascript
百度地图api应用标注地理位置信息(js版)
2013/02/01 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
JavaScript使用setInterval()函数实现简单轮询操作的方法
2015/02/02 Javascript
浅析JS异步加载进度条
2016/05/05 Javascript
js初始化验证实例详解
2016/11/26 Javascript
vue-hook-form使用详解
2017/04/07 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
2017/06/19 Javascript
js实现数组内数据的上移和下移的实例
2017/11/14 Javascript
Vue实现搜索 和新闻列表功能简单范例
2018/03/16 Javascript
Vue自定义指令封装节流函数的方法示例
2018/07/09 Javascript
vue组件挂载到全局方法的示例代码
2018/08/02 Javascript
代码分析vue中如何配置less
2018/09/28 Javascript
Vue动态组件与异步组件实例详解
2019/02/23 Javascript
Node.js学习之内置模块fs用法示例
2020/01/22 Javascript
原生jQuery实现只显示年份下拉框
2020/12/24 jQuery
python文件和目录操作方法大全(含实例)
2014/03/12 Python
详解Python中__str__和__repr__方法的区别
2015/04/17 Python
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
python利用lxml读写xml格式的文件
2017/08/10 Python
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
对python 矩阵转置transpose的实例讲解
2018/04/17 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
2019/05/15 Python
python3在同一行内输入n个数并用列表保存的例子
2019/07/20 Python
python threading和multiprocessing模块基本用法实例分析
2019/07/25 Python
Spring Cloud Feign高级应用实例详解
2019/12/10 Python
Python正则表达式如何匹配中文
2020/05/27 Python
如何Tkinter模块编写Python图形界面
2020/10/14 Python
Oakley西班牙官方商店:太阳眼镜和男女运动服
2019/04/26 全球购物
高三自我鉴定怎么写
2013/10/19 职场文书
初三班主任寄语大全
2014/04/04 职场文书
党员创先争优活动总结
2014/05/04 职场文书