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交换变量
Sep 06 Python
python实现堆栈与队列的方法
Jan 15 Python
使用Python编写提取日志中的中文的脚本的方法
Apr 30 Python
使用Python将Mysql的查询数据导出到文件的方法
Feb 25 Python
python虚拟环境完美部署教程
Aug 06 Python
python 接口实现 供第三方调用的例子
Aug 13 Python
python3 实现的对象与json相互转换操作示例
Aug 17 Python
Python3直接爬取图片URL并保存示例
Dec 18 Python
pytorch中tensor张量数据类型的转化方式
Dec 31 Python
TFRecord格式存储数据与队列读取实例
Jan 21 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
python脚本框架webpy模板控制结构
Nov 20 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 zlib压缩和解压缩swf文件的代码
2008/12/30 PHP
浅谈PHP 闭包特性在实际应用中的问题
2009/10/30 PHP
php引用传值实例详解学习
2013/11/06 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
javascript 控制弹出窗口
2007/04/10 Javascript
javascript中的array数组使用技巧
2010/01/31 Javascript
jQuery选择器全面总结
2014/01/06 Javascript
node.js中使用q.js实现api的promise化
2014/09/17 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
详解javascript实现自定义事件
2016/01/19 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
2016/02/27 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
2017/01/13 Javascript
json的结构与遍历方法实例分析
2017/04/25 Javascript
微信小程序 navbar实例详解
2017/05/11 Javascript
js实现鼠标拖拽多选功能示例
2017/08/01 Javascript
详解小程序原生使用ES7 async/await语法
2018/08/06 Javascript
JavaScript中this关键字用法实例分析
2018/08/24 Javascript
JavaScript实现省市联动效果
2019/11/22 Javascript
redux处理异步action解决方案
2020/03/22 Javascript
在Python中用split()方法分割字符串的使用介绍
2015/05/20 Python
简单了解Django ORM常用字段类型及参数配置
2020/01/07 Python
pycharm实现在虚拟环境中引入别人的项目
2020/03/09 Python
html5 datalist标签使用示例(自动完成组件)
2014/05/04 HTML / CSS
意大利灯具购物网站:Lampade.it
2018/10/18 全球购物
日本亚马逊官方网站:Amazon.co.jp
2020/04/14 全球购物
创业融资计划书
2014/04/25 职场文书
护士长竞聘演讲稿
2014/04/30 职场文书
护士求职信范文
2014/05/24 职场文书
建筑安全生产责任书
2014/07/22 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书
民事撤诉申请书范本
2015/05/18 职场文书
为自己工作观后感
2015/06/11 职场文书
2016年学校十一国庆节活动总结
2016/04/01 职场文书
如何撰写出一份完美的商业计划书?
2019/07/12 职场文书
2019年行政人事个人工作总结范本!
2019/07/19 职场文书
Django实现聊天机器人
2021/05/31 Python