1,参数和变量
形参”。调用函数的时候,给函数提供的值叫作“ 实参”,或者“ 参数”。
>>> def test(x): #x是参数,准确说是形参
a=2 #a是变量
return a+x #x就是那个形参作为变量,其本质是要传递赋给这个函数的值
>>> x=3 #x是变量,只不过在函数之外
>>> test(x) #这里的x是参数,但是它由前面的变量x传递对象3
5
2,全局变量和局部变量
全局变量和局部变量必须要弄清楚,因为关系到函数内外有别的大事。
>>> x = 2 #这个x就是全局变量
>>> def funcx():
x = 9 #该处x就是局部变量
print "x=",x
>>> funcx()
x= 9
>>> x
2
从输出看出,运行funcx(),输出了funcx()里面的变量x=9;然后执行代码中的最后一行,print"x=",x
要特别关注的是,前一个x输出的是函数内部的变量x;后一个x输出的是函数外面的变量x。两个变量彼此没有互相影响,虽然都是x。从这里看出,两个x各自在各自的领域内起到作用。
局部变量。
全局变量。
要注意,全局变量一定要慎重使用,因为往往容易带来变量的混乱。内外有别,在程序中一定要注意。
3,参数收集
Python用这样的方式解决参数个数的不确定性:
>>> def func(x,*arg):
print x
result = x
print arg
for i in arg:
result += i
return result
>>> func(1,2,3,4,5,6,7,8,9)
1
(2, 3, 4, 5, 6, 7, 8, 9)
45
从上面例子可以看出,如果输入的参数个数不确定,其他参数全部通过*arg,以元组的形式由arg收集起来。
上面可以总结出:
值1传给了参数x。
值2、3、4、5、6、7、8、9被塞入一个tuple里面,传给了arg。
为了能够更明显地看出arg(名称可以不一样,但是符号*必须要有),可以用下面的一个简单函数来演示:
*ale): #ale自己设置
print ale
>>> aaa(1,2,3,4)
(1, 2, 3, 4)
>>> aaa("hello","zhangsan","python")
('hello', 'zhangsan', 'python')
>>> aaa("hello")
('hello',)
不管是什么,都一股脑地塞进了tuple中。即使只有一个值,也是用tuple收集它。特别注意,在tuple中,如果只有一个元素,后面要有一个逗号。
还有一种键值对的传参方式:
**kar): #kar自己设置
print kar
>>> cc(a=1,b=2,c=3)
{'a': 1, 'c': 3, 'b': 2}
如果用**kargs的形式收集值,会得到字典类型的数据,但是,需要在传值的时候说明“键”和“值”,因为在字典中是以“键值”对形式出现的。