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 相关文章推荐
Python3.6 Schedule模块定时任务(实例讲解)
Nov 09 Python
Django中的Signal代码详解
Feb 05 Python
Python+OpenCV实现车牌字符分割和识别
Mar 31 Python
Python面向对象之继承和组合用法实例分析
Aug 27 Python
手把手教你使用Python创建微信机器人
Apr 29 Python
python matplotlib饼状图参数及用法解析
Nov 04 Python
wxPython实现整点报时
Nov 18 Python
python标准库OS模块详解
Mar 10 Python
django xadmin action兼容自定义model权限教程
Mar 30 Python
python构造IP报文实例
May 05 Python
2021年值得向Python开发者推荐的VS Code扩展插件
Jan 25 Python
Python tensorflow卷积神经Inception V3网络结构
May 06 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连接Oracle for NT 远程数据库
2006/10/09 PHP
10个可以简化php开发过程的MySQL工具
2010/04/11 PHP
PHP+JS实现大规模数据提交的方法
2015/07/02 PHP
PHP实现登陆并抓取微信列表中最新一组微信消息的方法
2017/07/10 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
2019/05/25 PHP
js兼容标准的表格变色效果
2008/06/28 Javascript
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
Extjs中DisplayField的日期或者数字格式化扩展
2010/09/03 Javascript
Google Maps API地图应用示例分享
2014/10/23 Javascript
js实现按钮加背景图片常用方法
2014/11/01 Javascript
Javascript学习笔记之 函数篇(三) : 闭包和引用
2014/11/23 Javascript
JQuery选中checkbox方法代码实例(全选、反选、全不选)
2015/04/27 Javascript
深入学习JavaScript的AngularJS框架中指令的使用方法
2016/03/05 Javascript
JavaScript实现汉字转换为拼音的库文件示例
2016/12/22 Javascript
js从输入框读取内容,比较两个数字的大小方法
2017/03/13 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
Bootstrap弹出框之自定义悬停框标题、内容和样式示例代码
2017/07/11 Javascript
vue+springboot前后端分离实现单点登录跨域问题解决方法
2018/01/30 Javascript
Angular 向组件传递模板的两种方法
2018/02/23 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
vue实现简易计算器功能
2021/01/20 Vue.js
天翼开放平台免费短信验证码接口使用实例
2013/12/18 Python
Python中列表(list)操作方法汇总
2014/08/18 Python
Python实现上下班抢个顺风单脚本
2018/02/07 Python
Python数据可视化库seaborn的使用总结
2019/01/15 Python
利用Python将图片中扭曲矩形的复原
2020/09/07 Python
如何用Python 加密文件
2020/09/10 Python
css3学习系列之移动属性详解
2017/07/04 HTML / CSS
ASOS比利时:英国线上零售商及自有品牌
2018/07/29 全球购物
职业技术学校毕业生推荐信
2013/12/03 职场文书
房屋改造计划书
2014/01/10 职场文书
保护地球的标语
2014/06/17 职场文书
授权委托书
2014/09/17 职场文书
县委党的群众路线教育实践活动工作情况报告
2014/10/25 职场文书
2014幼儿园班主任工作总结
2014/12/04 职场文书
全陪导游词
2015/02/04 职场文书