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除法运算小技巧
Apr 05 Python
状态机的概念和在Python下使用状态机的教程
Apr 11 Python
Python3.x对JSON的一些操作示例
Sep 01 Python
浅谈python 线程池threadpool之实现
Nov 17 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
Jan 08 Python
python实现三维拟合的方法
Dec 29 Python
python交互界面的退出方法
Feb 16 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
Apr 05 Python
Python 类的魔法属性用法实例分析
Nov 21 Python
PyTorch-GPU加速实例
Jun 23 Python
pycharm无法安装cv2模块问题
May 20 Python
python 镜像环境搭建总结
Sep 23 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中使用X-SendFile头让文件下载更快
2014/06/01 PHP
Smarty中调用FCKeditor的方法
2014/10/27 PHP
php自动载入类用法实例分析
2016/06/24 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
解决laravel中日志权限莫名变成了root的问题
2019/10/17 PHP
基于jQuery判断两个元素是否有重叠部分的代码
2012/07/25 Javascript
JS实现匀速运动的代码实例
2013/11/29 Javascript
javascript使用onclick事件改变选中行的颜色
2013/12/30 Javascript
引入JS文件IE6报语法错误或缺少对象问题的解决方法
2014/01/09 Javascript
javascript中的throttle和debounce浅析
2014/06/06 Javascript
angularjs中的单元测试实例
2014/12/06 Javascript
jQuery选择器源码解读(四):tokenize方法的Expr.preFilter
2015/03/31 Javascript
JavaScript DOM事件(笔记)
2015/04/08 Javascript
基于javascript显示当前时间以及倒计时功能
2016/03/18 Javascript
jQuery  ready方法实现原理详解
2016/10/19 Javascript
实例分析浏览器中“JavaScript解析器”的工作原理
2016/12/12 Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
2016/12/21 Javascript
详解JavaScript数组过滤相同元素的5种方法
2017/05/23 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
微信小程序实现刷脸登录
2018/05/25 Javascript
Vue组件全局注册实现警告框的实例详解
2018/06/11 Javascript
javascript中数组的常用算法深入分析
2019/03/12 Javascript
浅谈Javascript中的对象和继承
2019/04/19 Javascript
python进阶教程之函数对象(函数也是对象)
2014/08/30 Python
python实现函数极小值
2019/07/10 Python
如何搭建pytorch环境的方法步骤
2020/05/06 Python
Python爬虫抓取论坛关键字过程解析
2020/10/19 Python
Django REST Framework 分页(Pagination)详解
2020/11/30 Python
解决pytorch下出现multi-target not supported at的一种可能原因
2021/02/06 Python
纽约市的奢华内衣目的地:Anya Lust
2019/08/02 全球购物
《九色鹿》教学反思
2014/02/27 职场文书
学徒工职责
2014/03/06 职场文书
优秀员工评优方案
2014/06/13 职场文书
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
2022/04/14 Python
从原生JavaScript到React深入理解
2022/07/23 Javascript