1.introduction
函数是重用的程序段。允许给一块语句起一个名称,然后可以在程序的任何地方使用这个名称,任意多次地运行这个语句块。这被称为函数调用。在Python1中我们已经用过内建函数,比如len和range。
函数通过def关键字定义。def关键字后跟一个函数的标识符名称,然后跟一对圆括号。圆括号之中可以包括一些变量名,该行以冒号结尾。接下来是一块语句,它们是函数体。
2.函数形参
函数取得的参数是提供给函数的值。这些参数就像变量一样,只不过它们的值是在我们调用函数的时候定义的,而非在函数本身内赋值。参数在函数定义的圆括号对内指定,用逗号分割。当我们调用函数的时候,我们以同样的方式提供值。
3.局部变量
#function_para.py
def printMax(a,b):
if a>b:
print a, 'is maximum';
else:
print b, 'is maximum';
printMax(3,4); #poss parameters
在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是局部的。这称为变量的作用域 。所有变量的作用域是它们被定义的块,从它们的名称被定义的那点开始。
#functionLocal.py
def func(x):
print 'x is ', x;
x = 10;
print 'Change x to local is ', x;
x = 100;
func(x);
print 'x is still',x;
4.默认参数值
对于一些函数,可能希望它的一些参数是可选的,如果用户不想要为这些参数提供值的话,这些参数就使用默认值。这个功能借助于默认参数值完成。可以在函数定义的形参名后加上赋值运算符(=)和默认值,从而给形参指定默认参数值。注意,默认参数值应该是一个参数。更加准确的说,默认参数值应该是不可变的。
#function_default.py
def say(message,time=2):
print message*time;
say('Hello');
say('Hello',10);
5.关键参数
如果某个函数有许多参数,而只想指定其中的一部分,那么可以通过命名来为这些参数赋值,这被称作关键参数。使用名字而不是位置来给函数指定实参。这样做有两个优势 :1.由于不必担心参数的顺序,使用函数变得更加简单了;2.假设其他参数都有默认值,可以只给我们想要的那些参数赋值。
#function_key.py
def func(a,b=10,c=20):
print 'a is :', a;
print 'b is :', b;
print 'c is :', c;
func(3,7);
func(25,c=24);
func(c=100,a=0);
6.return语句
return语句用来从一个函数返回即跳出函数,从函数返回一个值
#func_return.py
def maximum(x,y):
if x > y :
return x;
else:
return y;
print maximum(100,10);
7.DocString语句
Python有一个很奇妙的特性,称为文档字符串 ,通常简称为 docstrings 。DocStrings是一个重要的工具,由于它帮助你的程序文档更加简单易懂,你应该尽量使用它。你甚至可以在程序运行时,从函数恢复文档字符串!
#func_doc.py
def printMax(x,y):
'''Prints the maximun of two numbers,
The two value must be in tegers.''';
x = int(x);
y = int(y);
if x > y :
print x, ' is maximun.';
else:
print y, ' is maximum.';
printMax(3.2,6.9);
print printMax.__doc__