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中的静态方法与类成员方法
Feb 28 Python
Python3安装Pymongo详细步骤
May 26 Python
Python中.join()和os.path.join()两个函数的用法详解
Jun 11 Python
Python基础学习之函数方法实例详解
Jun 18 Python
python实现简单五子棋游戏
Jun 18 Python
django项目简单调取百度翻译接口的方法
Aug 06 Python
python批量图片处理简单示例
Aug 06 Python
python实现PCA降维的示例详解
Feb 24 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
Mar 19 Python
python 数据分析实现长宽格式的转换
May 18 Python
python 模拟登录B站的示例代码
Dec 15 Python
Python+unittest+requests+excel实现接口自动化测试框架
Dec 23 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边学边教》(02.Apache+PHP环境配置――上篇)
2006/12/13 PHP
如何突破PHP程序员的技术瓶颈分析
2011/07/17 PHP
PHP把小数转成整数3种方法
2014/06/30 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
jQuery 判断元素上是否绑定了事件
2009/10/28 Javascript
jquery animate图片模向滑动示例代码
2011/01/26 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
详解webpack4升级指南以及从webpack3.x迁移
2018/06/12 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
利用js-cookie实现前端设置缓存数据定时失效
2019/06/18 Javascript
Vue快速实现通用表单验证的示例代码
2020/01/09 Javascript
Django基于ORM操作数据库的方法详解
2018/03/27 Python
dataframe设置两个条件取值的实例
2018/04/12 Python
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
2018/07/16 Python
如何用C代码给Python写扩展库(Cython)
2019/05/17 Python
Python3实现定时任务的四种方式
2019/06/03 Python
python中图像通道分离与合并实例
2020/01/17 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
提供世界各地便宜的机票:Sky-tours
2016/07/21 全球购物
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
一套英文Java笔试题面试题
2016/04/21 面试题
应届生会计求职信
2013/11/11 职场文书
军训自我鉴定
2013/12/14 职场文书
自愿解除劳动合同协议书
2014/09/11 职场文书
离婚被告代理词
2015/05/23 职场文书
2015年骨干教师工作总结
2015/05/26 职场文书
借钱欠条怎么写
2015/07/03 职场文书
高中同学会致辞
2015/08/01 职场文书
2016猴年春节问候语
2015/11/11 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书
python中的被动信息搜集
2021/04/29 Python
Log4j.properties配置及其使用
2021/08/02 Java/Android
日元符号 ¥
2022/02/17 杂记
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫