python的函数比较简单,主要关注以下特性即可:作用域、默认参数、关键参数。
作用域
默认在函数中的变量如果和外面的一样,那么会把外面的遍历屏蔽,即对其做改变不会影响外面变量的值;如果想要改变可以使用global关键字。
例子
#!/usr/bin/python
x = 10
y = 20
def func():
global x
x = 50
y = 100
func()
print 'Value of x is', x
print 'Value of y is', y
运行结果
Value of x is 50
Value of y is 20
默认参数
对于一些函数,你可能希望它的一些参数是可选的,如果用户不想要为这些参数提供值的话,这些参数就使用默认值。这个功能借助于默认参数值完成。你可以在函数定义的形参名后加上赋值运算符(=)和默认值,从而给形参指定默认参数值。
只有在形参表末尾的那些参数可以有默认参数值,即你不能在声明函数形参的时候,先声明有默认值的形参而后声明没有默认值的形参。 这是因为赋给形参的值是根据位置而赋值的。例如,def func(a, b=5)是有效的,但是 def func(a=5, b)是无效的,这和C++是类似的。
例子
#!/usr/bin/python
def say(message, times = 1):
print message * times
say('Hello')
say('World', 5)
运行结果
Hello
WorldWorldWorldWorldWorld
关键参数
如果某个函数有许多参数,而只想指定其中的一部分,那么可以通过命名来为这些参数赋值,这就是关键参数,即使用名字(关键字)而不是位置(我们前面所一直使用的方法)来给函数指定实参。
这样做有两个好处:
1. 由于我们不必担心参数的顺序,使用函数变得更加简单了。
2. 假设其他参数都有默认值,我们可以只给我们想要的那些参数赋值。
例子
#!/usr/bin/python
def func(a, b=5, c=10):
print 'a is', a, 'and b is', b, 'and c is', c
func(3, 7)
func(25, c=24)
func(c=50, a=100)
运行结果
a is 3 and b is 7 and c is 10
a is 25 and b is 5 and c is 24
a is 100 and b is 5 and c is 50