Function的定义是很重要的语言要素,先来看一段代码:
>>> def fib(n): # write Fibonacci series up to n
... """Print a Fibonacci series up to n."""
... a, b = 0, 1
... while b < n:
... print b,
... a, b = b, a+b
...
>>> # Now call the function we just defined:
... fib(2000)
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
这个是一个计算Fibonacci数列的函数。我们看到定义function需要关键字“def”,需要一个函数名,和括号中的参数列表。函数体用缩进来界定。 在函数体的第一行可以是一个字符串常量,称为docstring。这个注视行有点类似javadoc,可以被很多工具处理来生成API文档。 因为所有的赋值都是对local symbol table做操作。因此对全局变量引用是可以的,对全局变量赋值是不可以的(除非用global语句特别指明)。 Python是传值调用的,作为参数传进来的对象的地址是不能改变的。但是对象的数据成员是可变的。这个和Java很相似。 函数的返回值的类型不必特别声明。可以直接在函数内部的任何位置使用return。如果return语句不加参数或是没有return语句,返回值是“None”。 最后,和C++一样,函数是可以互相赋值的:
>>> fib
<function object at 10042ed0>
>>> f = fib
>>> f(100)
1 1 2 3 5 8 13 21 34 55 89
|