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中的私有属性
Aug 21 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
Jul 04 Python
Python实现批量更换指定目录下文件扩展名的方法
Sep 19 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
Jan 05 Python
pandas对指定列进行填充的方法
Apr 11 Python
在dataframe两列日期相减并且得到具体的月数实例
Jul 03 Python
Scrapy使用的基本流程与实例讲解
Oct 21 Python
python用pandas数据加载、存储与文件格式的实例
Dec 07 Python
python turtle库画一个方格和圆实例
Jun 27 Python
python pandas 时间日期的处理实现
Jul 30 Python
python实现对服务器脚本敏感信息的加密解密功能
Aug 13 Python
wxpython实现按钮切换界面的方法
Nov 19 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 中的面向对象编程:通向大型 PHP 工程的办法
2006/12/03 PHP
php中显示数组与对象的实现代码
2011/04/18 PHP
php 抽象类的简单应用
2011/09/06 PHP
php遍历替换目录下文件指定内容的方法
2016/11/10 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
默认让页面的第一个控件选中的javascript代码
2009/12/26 Javascript
通过判断JavaScript的版本实现执行不同的代码
2010/05/11 Javascript
div浮层,滚动条移动,位置保持不变的4种方法汇总
2013/12/11 Javascript
javascript实现英文首字母大写
2015/04/23 Javascript
浅谈使用MVC模式进行JavaScript程序开发
2015/11/10 Javascript
vue,angular,avalon这三种MVVM框架优缺点
2016/04/27 Javascript
JavaScript程序中的流程控制语句用法总结
2016/05/23 Javascript
JavaScript简单实现弹出拖拽窗口(一)
2016/06/17 Javascript
React创建组件的三种方式及其区别
2017/01/12 Javascript
Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
2017/09/18 Javascript
Vue点击切换颜色的方法
2018/09/13 Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
2019/04/24 Javascript
使用vue-router在Vue页面之间传递数据的方法
2019/07/15 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
2019/11/14 Javascript
在vue中使用echarts(折线图的demo,markline用法)
2020/07/20 Javascript
vue:el-input输入时限制输入的类型操作
2020/08/05 Javascript
Vue跨域请求问题解决方案过程解析
2020/08/07 Javascript
python读取json文件并将数据插入到mongodb的方法
2015/03/23 Python
Python基于回溯法子集树模板解决0-1背包问题实例
2017/09/02 Python
Python给你的头像加上圣诞帽
2018/01/04 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
2020/04/08 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
2020/11/10 Python
HTML5+CSS3实现机器猫
2016/10/17 HTML / CSS
Monnier Frères美国官网:法国知名奢侈品网站
2016/11/22 全球购物
SIDESTEP荷兰:在线购买鞋子
2019/11/18 全球购物
如何用Python输出一个Fibonacci数列
2016/08/28 面试题
自荐信包含哪些内容
2013/10/30 职场文书
物流专业大学生的自我鉴定
2013/11/13 职场文书
售后服务科岗位职责范文
2013/11/13 职场文书
环境保护与污染治理求职信
2014/07/16 职场文书
热血教师观后感
2015/06/10 职场文书