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的三目运算符和not in运算符使用示例
Mar 03 Python
pygame学习笔记(4):声音控制
Apr 15 Python
python超简单解决约瑟夫环问题
May 12 Python
深入讲解Python中面向对象编程的相关知识
May 25 Python
Python的Django框架中设置日期和字段可选的方法
Jul 17 Python
Python实现的异步代理爬虫及代理池
Mar 17 Python
django 多数据库配置教程
May 30 Python
python利用ffmpeg进行录制屏幕的方法
Jan 10 Python
python实现画五角星和螺旋线的示例
Jan 20 Python
python实现贪吃蛇小游戏
Mar 21 Python
numpy.array 操作使用简单总结
Nov 08 Python
Python 实现递归法解决迷宫问题的示例代码
Jan 12 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
多文件上传的例子
2006/10/09 PHP
php学习 函数 课件
2008/06/15 PHP
浅谈COOKIE和SESSION区别
2015/07/19 PHP
Yii使用EasyWechat实现小程序获取用户的openID的方法
2020/04/29 PHP
js判断变量是否空值的代码
2008/10/26 Javascript
cnblogs csdn 代码运行框实现代码
2009/11/02 Javascript
JQuery对checkbox操作 (循环获取)
2011/05/20 Javascript
js判断输入是否为数字的具体实例
2013/08/03 Javascript
JavaScript中数据结构与算法(五):经典KMP算法
2015/06/19 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
js 模仿锚点定位的实现方法
2016/11/19 Javascript
Vue.js第四天学习笔记
2016/12/02 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
使用AngularJS2中的指令实现按钮的切换效果
2017/03/27 Javascript
JS简单判断滚动条的滚动方向实现方法
2017/04/28 Javascript
详解微信小程序开发(项目从零开始)
2019/06/06 Javascript
package.json配置文件构成详解
2019/08/27 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
ES6 Symbol在对象中的作用实例分析
2020/06/06 Javascript
[02:53]2018年度DOTA2最佳战队-完美盛典
2018/12/17 DOTA
深入解析Python中的集合类型操作符
2015/08/19 Python
Python实现将HTML转换成doc格式文件的方法示例
2017/11/20 Python
Python实现读取机器硬件信息的方法示例
2018/06/09 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
解决运行出现'dict' object has no attribute 'has_key'问题
2020/07/15 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
2020/11/05 Python
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
Html5剪切板功能的实现代码
2018/06/29 HTML / CSS
大学生专业个人学习的自我评价
2013/10/26 职场文书
毕业生个人求职的自我评价
2013/10/28 职场文书
演讲稿开场白
2014/01/13 职场文书
2014年社区庆元旦活动方案
2014/03/08 职场文书
详解Spring事件发布与监听机制
2021/06/30 Java/Android
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
2021/10/16 Python
MySQL优化及索引解析
2022/03/17 MySQL
Vue Element plus使用方法梳理
2022/12/24 Vue.js