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 相关文章推荐
Python基于PycURL自动处理cookie的方法
Jul 25 Python
Python获取当前函数名称方法实例分享
Jan 18 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
Mar 11 Python
Django 重写用户模型的实现
Jul 29 Python
Django CSRF跨站请求伪造防护过程解析
Jul 31 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
Dec 04 Python
Tensorflow的常用矩阵生成方式
Jan 04 Python
Python单元测试模块doctest的具体使用
Feb 10 Python
python 使用递归回溯完美解决八皇后的问题
Feb 26 Python
Keras搭建自编码器操作
Jul 03 Python
Python编写单元测试代码实例
Sep 10 Python
用Python实现一个打字速度测试工具来测试你的手速
May 28 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 nl2br函数 将换行字符转成 <br>
2009/08/21 PHP
php魔术函数__call()用法实例分析
2015/02/13 PHP
如何修改yii2.0自带的user表为其它的表
2017/08/01 PHP
PHP实现简单日历类编写
2020/08/28 PHP
javascript动画效果类封装代码
2007/08/28 Javascript
jquery中的事件处理详细介绍
2013/06/24 Javascript
文本域中换行符的替换示例
2014/03/04 Javascript
jquery操作复选框checkbox的方法汇总
2015/02/05 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
javascript实现网站加入收藏功能
2015/12/16 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
基于jQuery实现文字打印动态效果
2017/04/21 jQuery
详解vue中引入stylus及报错解决方法
2017/09/22 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
js中arguments对象的深入理解
2019/05/14 Javascript
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
python如何压缩新文件到已有ZIP文件
2018/03/14 Python
Linux CentOS Python开发环境搭建教程
2018/11/28 Python
使用python画社交网络图实例代码
2019/07/10 Python
对django layer弹窗组件的使用详解
2019/08/31 Python
Python变量作用域LEGB用法解析
2020/02/04 Python
python入门之井字棋小游戏
2020/03/05 Python
python输入中文的实例方法
2020/09/14 Python
webapp字号大小跟随系统字号大小缩放的示例代码
2018/12/26 HTML / CSS
几个Linux面试题笔试题
2016/08/01 面试题
Linux如何命名文件--使用文件名时应注意
2012/01/22 面试题
我的网上商城创业计划书
2013/12/26 职场文书
材料专业毕业生求职信
2014/02/26 职场文书
教师查摆问题及整改措施
2014/10/11 职场文书
六一文艺汇演开幕词
2015/01/29 职场文书
学校教学工作总结2015
2015/05/19 职场文书
张思德观后感
2015/06/09 职场文书
初中班长竞选稿
2015/11/20 职场文书
如何开启Apache,Nginx和IIS服务器的GZIP压缩功能
2022/04/29 Servers