函数参数一:传递与匹配规则
来源:互联网 发布:rsa属于什么算法 编辑:程序博客网 时间:2024/05/18 02:20
一、参数传递规则:
1、不可变参数通过值进行传递(数字、字符串等)2、可变参数通过"指针"进行传递(字典、列表)
3、实例:
def change(a,b): a = 2 b[0] = 'spam'AA = 1BB = [1,2]change(AA,BB)"""AA= 1BB= ['spam', 2]"""print "AA=",AAprint "BB=",BB
4、避免可变参数被修改,传入可变产生的拷贝
AA1 = 100BB1 = ['A','B']change(AA1,BB1[:])"""AA1= 100BB1= ['A', 'B']"""print "AA1=",AA1print "BB1=",BB1
二、函数参数匹配规则:
混合参数使用规则:1、函数调用赋值先后顺序:位置参数(value)->关键字参数(name=value)->*sequence收集参数->**dict收集参数2、函数头部定义先后顺序:一般参数(name)->任何默认参数(name=value)->*name ->keyvord-only->**name
参数匹配的步骤:1、通过位置分配非关键字参数2、通过匹配变量名分配关键字参数3、其他额外的非关键字参数分配给*name元组中4、其他额外的非关键字参数分配给**name字典中5、使用默认值分配给在头部未得到分配的参数*和**语法解析:在头部时意味着收集任意数量的参数在调用时解包任意数量的参数
1、任意参数实例,收集参数
def f(*args): print args"""输出结果:()(1,)('a', [2, 3], {'a': 3}, 4)"""f()f(1)f('a',[2,3],{'a':3},4)def f11(**args): print args"""输出结果:{}{'a': 1, 'b': 2}"""f11()f11(a=1,b=2)
2、混合参数实例:
def f22(a,*pargs,**kargs): print a,pargs,kargs"""输出结果:1 (2, 3) {'y': 2, 'x': 1}"""f22(1,2,3,x=1,y=2)
3、解包参数,解包的时候参数个数必须对应上,多或是少均报错
def func11(a,b,c,d): print a,b,c,dargs = (1,2)args += (3,4)"""运行结果:通过序列解包完成参数赋值1 2 3 4"""func11(*args) #函数调用的时候,通过序列解包完成对应参数的赋值,注意调用时加'*'args1 = {'a':1,'b':2,'c':3}args1['d'] = 4"""通过字典的解包完成参数赋值:赋值的字典键值必须同参数名一一对应1 2 3 4"""func11(**args1) #注意调用时加'**'
0 0
- 函数参数一:传递与匹配规则
- 函数参数传递规则(一)
- python函数参数传递规则
- python 函数参数传递和参数匹配
- ARM中函数参数传递规则
- python 函数调用参数传递规则
- ARM函数调用时参数传递规则
- arm函数调用参数传递规则
- arm汇编函数调用参数传递规则
- Python函数非匹配参数类型传递
- 函数参数传递方法一
- 数组与函数参数传递
- python 参数匹配规则
- ARM参数传递规则
- linux参数传递规则
- ARM参数传递规则
- 参数传递规则
- ARM参数传递规则
- hdoj 1016 素数圆环问题(深度优先搜索z和道题 )
- 【更博冒泡一下.】
- DT大数据梦工厂第59讲-隐式转换初体验
- bzoj1031[JSOI2007]字符加密Cipher——SuffixArray
- 超图的地图慧
- 函数参数一:传递与匹配规则
- 推荐系统之协同过滤实现
- 贝塞尔曲线的应用
- 输入一个字符串,如果第一个字符是大写并且其他字符不是大写,那么输出true,否则输出false。
- 记我的WiFi音箱之一个网络在线播放及本地播放音乐器(二)
- C语言的基本类型
- POJ 1502:MPI Maelstrom Dijkstra模板题
- JavaSE-疯狂讲义-5.4隐藏与封装
- C++基础---构造函数与关键字explicit