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代理抓取并验证使用多线程实现
May 03 Python
Python远程桌面协议RDPY安装使用介绍
Apr 15 Python
Python中循环引用(import)失败的解决方法
Apr 22 Python
matplotlib savefig 保存图片大小的实例
May 24 Python
python matplotlib 在指定的两个点之间连线方法
May 25 Python
Python+Pandas 获取数据库并加入DataFrame的实例
Jul 25 Python
对Python2与Python3中__bool__方法的差异详解
Nov 01 Python
python基础知识(一)变量与简单数据类型详解
Apr 17 Python
python3.7 openpyxl 删除指定一列或者一行的代码
Oct 08 Python
python从zip中删除指定后缀文件(推荐)
Dec 05 Python
Python爬取腾讯视频评论的思路详解
Dec 19 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
Mar 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
apache配置虚拟主机的方法详解
2013/06/17 PHP
PHP获取远程图片并保存到本地的方法
2015/05/12 PHP
Angularjs中使用Filters详解
2016/03/11 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
微信小程序开发的四十个技术窍门总结(推荐)
2017/01/23 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
2017/04/05 Javascript
vue组件父子间通信之综合练习(聊天室)
2017/11/07 Javascript
jQuery实现标签子元素的添加和赋值方法
2018/02/24 jQuery
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
2019/09/20 Javascript
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
Vue检测屏幕变化来改变不同的charts样式实例
2020/10/26 Javascript
Python的Django框架中模板碎片缓存简介
2015/07/24 Python
python基础教程之Filter使用方法
2017/01/17 Python
Python FTP两个文件夹间的同步实例代码
2018/05/25 Python
python切片及sys.argv[]用法详解
2018/05/25 Python
Python定义二叉树及4种遍历方法实例详解
2018/07/05 Python
Pyqt5自适应布局实例
2019/12/13 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
使用Python和百度语音识别生成视频字幕的实现
2020/04/09 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
2020/05/24 Python
Keras官方中文文档:性能评估Metrices详解
2020/06/15 Python
Keras在训练期间可视化训练误差和测试误差实例
2020/06/16 Python
如何卸载python插件
2020/07/08 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
2020/11/17 Python
力学专业毕业生自荐信
2013/11/17 职场文书
火锅店创业计划书范文
2014/02/02 职场文书
小学清明节活动总结
2014/07/04 职场文书
买房子个人收入证明
2014/10/12 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
2014年城管工作总结
2014/11/20 职场文书
英文版辞职信
2015/02/28 职场文书
浅谈由position属性引申的css进阶讨论
2021/05/25 HTML / CSS
Ajax 的初步实现(使用vscode+node.js+express框架)
2021/06/18 Javascript
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server