Python 简明教程——函数

  Python中,函数通过def关键字定义。def关键字后跟一个函数的函数名,然后跟一对圆括号。圆括号之中可以包括一些变量名,该行以冒号结尾。接下来是一块语句,它们是函数体。

函数形参
   函数取得的参数是调用函数时提供给函数的值,这样函数就可以利用这些值 。这些参数就像变量一样,只不过它们的值是在调用函数的时候定义的,而非在函数本身内赋值。
   参数在函数定义的圆括号对内指定,用逗号分割。当调用函数的时候,需要以同样的方式提供值。
局部变量
   当在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是局部的。所有变量的作用域是它们被定义的块,从它们的名称被定义的那点开始。
如果要为一个定义在函数外的变量赋值,需要说明这个变量是全局的。可以使用global语句完成这一功能。可以使用定义在函数外的变量的值(假设在函数内没有同名的变量)。使用global语句可以清楚地表明变量是在外面的块定义的。
默认参数值
在函数定义的形参名后加上赋值运算符(=)和默认值,可以给形参指定默认参数值。
使用默认参数值的例子
#!/usr/bin/python
def say(message, times = 1):
    print message * times
say('Hello')
say('World', 5)
输出
Hello
WorldWorldWorldWorldWorld
只有在形参表末尾的那些参数可以有默认参数值,这是因为赋给形参的值是根据位置而赋值的。
关键参数
如果某个函数有许多参数,而在调用时只想指定其中的一部分,这时可以通过命名来为这些参数赋值(关键参数)——使用形参名字(关键字)而不是位置来给函数指定实参。
这样做有个好处:不必考虑参数的顺序,使用函数调用变得更加简单了。
例:
#!/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)
return语句
return语句用来从一个函数返回。也可以返回一个值。没有返回值的return语句等价于return None。None是Python中表示没有任何东西的特殊类型。
DocStrings
Python有一个很奇妙的特性,称为文档字符串(docstrings) 。DocStrings是一个重要的工具,它可以使程序文档更加简单易懂。
使用DocStrings
#!/usr/bin/python
def printMax(x, y):
    '''Prints the maximum of two numbers.
    The two values must be integers.'''
    x = int(x) # convert to integers, if possible
    y = int(y)
    if x > y:
        print x, 'is maximum'
    else:
        print y, 'is maximum'
printMax(3, 5)
print printMax.__doc__
输出:
5 is maximum
Prints the maximum of two numbers.
        The two values must be integers.
在函数的第一个逻辑行的字符串是这个函数的文档字符串。DocStrings也可以用于模块和类。
文档字符串的惯例是一个多行字符串,它的首行以大写字母开始,句号结尾。第二行是空行,从第三行开始是详细的描述。
可以使用__doc__(双下划线)调用文档字符串属性。Python把所有东西都作为对象,包括函数。
Python中的help()函数所做的只是获取函数的__doc__属性并显示。pydoc命令,与help()类似地使用DocStrings。