def functionname(x,y,z,*args,**kwargs)python
>>> def funa(x,y,z):
... print x,y,z
...
>>> funa(1,2,3)
1 2 3函数
>>> funa(x=1,y=4,z=8)
1 4 8
>>>
3.任意参数的匹配ui
格式:def funa(*args,**kyargs):spa
定义时两个符号的做用:.net
"*"用元组收集没有匹配到的参数,返回一个元组htm
示例代码ci
>>> def funa(x,y,z,*arges):
... print x,y,z
... print arges
...
>>> funa(1,2,3,4,5,6)
1 2 3
(4, 5, 6)
>>> 作用域
在调用的时候“*”会把元组拆开匹配到函数的参数中文档
In [1]: def funa(x,y,z):
...: print x,y,z
...: io
In [2]: x=[1,2,3]
In [3]: funa(*x)
1 2 3
“**”用字典收集没有匹配的参数,返回一个字典
>>> def funa(x,y,z,**kyarges):
... print x,y,z
... print kyarges
>>> funa(1,2,3,a=3,b='hello')
1 2 3
{'a': 3, 'b': 'hello'}
>>>
在“**”的调用中会把字典拆开,匹配到函数的参数中
In [9]: def funa(x,y,z):
...: print x,y,z
...:
In [10]: A={"x":1,"y":2,"z":3}
In [11]: funa(**A)
1 2 3
注意调用和定义函数的格式
调用函数 | 定义函数 |
如下是调用函数时可以使用的正式参数类型:
必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的同样
关键字参数和函数调用关系紧密,函数调用使用关键字参数来肯定传入的参数值。
使用关键字参数容许函数调用时参数的顺序与声明时不一致,由于 Python 解释器可以用参数名匹配参数值。
默认参数若是在调用时没有赋值,则按默认的值调用
不定长参数即*arges和**kyarges
注意:如何辨别一个参数的性质?
参考此博文:http://www.jb51.net/article/64966.htm
In [24]: x=range(1,9)
print ‘x=’,id(x)
In [25]: def funa(a):
...: print ‘a=’,id(a)
...: a[1]='hello word'
...: print a
...:
In [26]: funa(x)#funa(list(x))不变
[1, 'hello word', 3, 4, 5, 6, 7, 8]
In [27]: print x
[1, 'hello word', 3, 4, 5, 6, 7, 8]
python返回值有多个,但实际是返回的一个元组。
定义在函数内部的变量拥有一个局部做用域,定义在函数外的拥有全局做用域。局部变量只能在其被声明的函数内部访问,而全局变量能够在整个程序范围内访问。调用函数时,全部在函数内声明的变量名称都将被加入到做用域中。
legb原则:
L(local)本地函数
E(enclose)任意上层的嵌套函数
G(global)全局做用域(一个python文件中,跨文件不能够)
B(build-in)内置做用域
In [36]: t=0
In [38]: def sum (x,y):
...: t=x+y
...: print"函数内变量:",t
...: return t
...:
In [39]: sum(10,20)
函数内变量: 30
Out[39]: 30
In [40]: print t
0
函数内要使用全局变量必须使用global进行定义;函数外的变量至关于一个全局变量,能够使用这个方法去改变全局变量的值。
文档的使用说明,帮助属性。能够使用注释加文字。
打印时使用print 函数名+__doc__