函数是个重要的程序段 他们允许你给一块语句一个名称,然后你可以在程序的任何地方任意多次使用语句块。比如一些内建函数 len和range之类。
函数通过def关键字定义。
定义函数
# filename : fun1.py
def sayHello():
print 'hello python'
sayHello()
函数形参的使用
# filename: fun_param.py
def printMax(a,b):
if a>b:
print a,'is max'
else:
print b,'is max'
printMax(3,4)
x = 5
y = 7
printMax(x,y)
#输出
$ python fun_param.py
4 is max
7 is max
局部变量
# filename: fun_local.py
def func(x):
print 'x is', x
x = 2
print 'changed local x to', x
x = 50
fun(x)
print 'x is still', x
#输出
$ python fun_local.py
x is 50
changed local x to 2
x is still 50
使用global语句
如果你想为一个定义在函数外的变量赋值 就可以使用global完成这一功能
值得注意的是 可以使用定义在函数外的变量的值(假设在函数内设有同样的变量)。然而,我并不赞成这样做,并且最好避免,这样会使你的程序不清晰 这个变量到底在哪里定义的。使用global语句可以清晰的表明变量在外面定义的。
# filename: fun_global.py
def func():
global x
print 'x is', x
x = 2
print 'changed local x to', x
x = 50
fun(x)
print 'value of x is', x
#输出
$ python fun_global.py
x is 50
changed global x to 2
value of x is 2
默认参数值
对于一些函数,可以选择参数是可选的,如果用户不想要为这些参数提供值的话,这些参数就使用默认值。这个功能借助于默认参数值完成。也已在函数定义的形参名后面加上赋值运算符(=)和默认值,从而给形参指定默认值。
有人还告诉我 默认参数值应该是不可变的。
# filename: fun_default.py
def say(message, times = 1):
print message * times
say('hello')
say('world', 5)
#输出
$ python fun_default.py
hello
worldworldworldworldworld
此外,只有在形参末尾的那些参数可以有默认参数值,即不能再声明函数形参时,先声明有默认值的形参而后声明没有默认值的形参。打个比方,def func(a,b =5)是有效的,而def func(a=5,b)是无效的。
关键参数
对于众多函数参数,只想指定某一部分,那么可以通过命名来为它们赋值,python中起了个奇怪的名称 叫做关键参数。我们使用名字(关键字)而不是之间的方法指定参数。
从度娘那得知这样做有两个优势, 1由于不必担心参数的顺序,使用函数变得更家简单。2 假定其他参数都有默认值,就可以只给只给想要的参数赋值 。
使用关键参数
# filename: fun_key.py
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)
#输出
$ python fun_key.py
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
return语句
# filename: fun_return.py
def max(x,y):
if x > y:
return x
else:
return y
print max(2,3)
#输出
$ python fun_return.py
3<span style="color:#cc0000;">
</span>
DocStrings
见名知意 ‘文档字符串’ 它是python中一个很重要的特性,简称docstring。它使你的程序文档更加简单易懂,多用是有好处,更可以,在程序运行时,从函数回复文档字符串。
# filename: fun_doc.py
def printMax(x,y):
'''prints hte maximum of 2 numbers
the two values must be integers.'''
x = int(x)
if x>y:
print x,'is max'
else:
print y,'is max'
printMax(3,5)
print printMax._doc_
#输出
$ python fun_doc.py
5 is max
prints hte maximum of 2 numbers
the two values must be integers.