python传递参数方式小结


Posted in Python onApril 17, 2015

本文实例总结了python传递参数方式。分享给大家供大家参考。具体分析如下:

当形参如*arg时表示传入数组,当形参如**args时表示传入字典。

def myprint(*commends,**map):  
 for comm in commends:  
 print comm  
 for key in map.keys():  
 print key,map[key]  
myprint("hello","word",username="tian",name="wei")

输出:

hello
word
username tian
name wei

python中定义一个函数,可以通过正常的只传入值或key-value的方法调用。但是如果第一个时参数传入的是key-value的方法,那么后面的必须都是key-value方法,如果第一个不是,那么后面的可以根据情况再传入值就可以了。

例子如下:

def parrot(voltage="fff",state='a stiff',action='voom',type='Norwegian Blue'):
 print "-- This parrot wouldn't", action,  
 print "if you put", voltage, "volts through it." 
 print "-- Lovely plumage, the", type  
 print "-- It's", state, "!" 
parrot(1000)#可以  
parrot(action = 'VOOOOOM', voltage = 1000000)
#可以,都是key-value方法  
parrot('a thousand', state = 'pushing up the daisies')
#可以,第一个实参为直接传入法,后面无所谓了  
parrot('a million', 'bereft of life', 'jump')
#可以,都是传值,而且由于形参都有默认值,则按顺序一个个替换  
parrot(voltage="33","ff","abc")
# 不可以,第一个为Key-value传值法,以后的都必须是

Python新手入门,在python中函式定义主要有四种方式:

① F(arg1,arg2,...),最常见的定义方式,一个函式可以定义任何个参数,每个参数间用逗号分割,用这种参数在调用的时候必须在函式名后面的小括号中提供个数相等的值(实参),并且顺序必须相同,形参与实参一一对应

def a(x,y): 
  print x,y

调用a函式,a(1,2)则x=1,y=2,如果a(1)或者a(1,2,3)则会出错

② F(arg1,arg2=value2,...agrN=valueN),则将为函式提供默认值。

def a(x,y=3):
  print x,y

调用该函式,a(1,2)则x=1,y=2,如果a(1)不会导致错误,此时x=1,y=3,y值将使用默认值,a(y=4,x=2)同理

可变参数:

③ F(*arg1),以一个*加形参的方式来表示函式的实参个数不确定,参数个数>=0,采用这样的方式定义函式,在函式内部将以实参名的方式构建一个元组(tuple)

def a(*x):  
  # 定义一个名为x的元组

def a(*t):  
  print x 

>>>a(1) 
(1,) 
>>>a() 
None 
>>>a(1,2,3) 
(1,2,3)

遍历该元组(计算总和)的一种方式,此时r定义为一元组:

def y(*r):
  x = 0
  for t in r:
    x += t
  print x

④ F(**arg)形参名前加2个**表示在函式内部将被存放在以形参名为标识符的dictionary,这时调用将使用arg1=value1,arg2=value2...

def a(**b):  
  print b 

>>>a() 
None 
>>>a(x=1,y=2) 
{'y':2,'x':1}
#注意遍历返回的顺序与形参位置顺序相反
>>>a(1,2) #error

可通过以下方式来获取预期键值对,如果形参是未定义'y'的键,将返回None

def a(**x):  
  print x.get('y')

>>>a(x=1,y=2) 
2 
>>>a(x=1) 
None 
>>>a(x=1,b=2)
None

Python参数调用过程按照以上四种方法优先级依次降低。

①方式解析,然后是②中的arg=value方式,再分别按照③>④优先级传参

这是自己第一份通过Blog整理的学习笔记,希望对自己,对浏览至此的各位朋友有所帮助,以上函式命名不符合规范,仅用于简单标识说明,使用python 2.6.2

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Pyramid Mako模板引入helper对象的步骤方法
Nov 27 Python
Python3读取UTF-8文件及统计文件行数的方法
May 22 Python
Python中条件判断语句的简单使用方法
Aug 21 Python
基于Python实现一个简单的银行转账操作
Mar 06 Python
利用Python中unittest实现简单的单元测试实例详解
Jan 09 Python
Python Json模块中dumps、loads、dump、load函数介绍
May 15 Python
Python 删除连续出现的指定字符的实例
Jun 29 Python
python字典的常用方法总结
Jul 31 Python
flask实现验证码并验证功能
Dec 05 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
Mar 25 Python
python tqdm用法及实例详解
Jun 16 Python
python可视化分析绘制带趋势线的散点图和边缘直方图
Jun 25 Python
使用70行Python代码实现一个递归下降解析器的教程
Apr 17 #Python
python类继承与子类实例初始化用法分析
Apr 17 #Python
python中split方法用法分析
Apr 17 #Python
仅用50行代码实现一个Python编写的计算器的教程
Apr 17 #Python
python字典get()方法用法分析
Apr 17 #Python
详解Python中__str__和__repr__方法的区别
Apr 17 #Python
使用Python设置tmpfs来加速项目的教程
Apr 17 #Python
You might like
php面向对象全攻略 (十六) 对象的串行化
2009/09/30 PHP
PHP中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
深入讲解PHP的对象注入(Object Injection)
2017/03/01 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
2017/09/04 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
2018/12/05 PHP
php统计数组不同元素的个数的实例方法
2019/09/26 PHP
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
2007/01/29 Javascript
JQuery里选择超链接的实现代码
2011/05/22 Javascript
JS中typeof与instanceof之间的区别总结
2013/11/14 Javascript
js获取当前月的第一天和最后一天的小例子
2013/11/18 Javascript
浅谈javascript函数式编程
2015/09/06 Javascript
jQuery实现根据生日计算年龄 星座 生肖
2016/11/23 Javascript
angular4中关于表单的校验示例
2017/10/16 Javascript
vue移动端轻量级的轮播组件实现代码
2018/07/12 Javascript
vue-cli3.0+element-ui上传组件el-upload的使用
2018/12/03 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
探寻python多线程ctrl+c退出问题解决方案
2014/10/23 Python
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
python操作小程序云数据库实现简单的增删改查功能
2019/06/06 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例
2020/02/28 Python
python opencv进行图像拼接
2020/03/27 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
2020/04/02 Python
python输出数学符号实例
2020/05/11 Python
解决keras模型保存h5文件提示无此目录问题
2020/07/01 Python
Node.js 和 Python之间该选择哪个?
2020/08/05 Python
基于python爬取梨视频实现过程解析
2020/11/09 Python
AURALog面试题软件测试方面
2013/10/22 面试题
小学生自我鉴定
2013/10/12 职场文书
优秀广告词大全
2014/03/19 职场文书
委托协议书范本
2014/04/22 职场文书
物理课外活动总结
2014/08/27 职场文书
机械制造专业大学生自我鉴定
2014/09/19 职场文书
2015新学期家长寄语
2015/02/26 职场文书
教你快速开启Apache SkyWalking的自监控
2021/04/25 Servers