Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1489593
  • 博文数量: 408
  • 博客积分: 10036
  • 博客等级: 上将
  • 技术积分: 4440
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-06 13:57
文章分类

全部博文(408)

文章存档

2011年(1)

2010年(2)

2009年(1)

2008年(3)

2007年(7)

2006年(394)

我的朋友

分类: Python/Ruby

2006-07-24 17:41:08

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 NoneNone是Python中表示没有任何东西的特殊类型。

DocStrings

Python有一个很奇妙的特性,称为文档字符串(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。

阅读(880) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~