在python里面,简单的使用def关键字就可以定义一个函数,由于python是弱类型语言,所以不需声明返回值类型

定义一个Fibonacci函数:

>>> def fib(n):
...     a, b = 0, 1
...     while a < n:
...         print a,
...         a, b = b, a+b
... 
>>> fib(2000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597

由此可见,return语句可有可无,当不使用return语句时,返回值为None

>>> print fib(2000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 None

最后那里的None才是fib的返回值



python的函数名跟javascript有点相似,直接输入函数名,将返回函数的入口地址

也就是说,函数名本身就是个指针

>>> fib
<function fib at 0x7fc0c4aee668>

所以,可以把这个函数名作为指针传递给其他指针变量

>>> f = fib

传递完毕之后,可以直接调用新的指针变量,使用方法跟原函数指针一致

>>> f(2000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597


如果把前面的例子加上return语句的话,那就必须创建个列表,把Fibonacci数列的结果给存起来返回


>>> def fib2(n):
...     result = []
...     a, b = 0, 1
...     while a < n:
...         result.append(a)
...         a, b = b, a+b
...     return result
... 
>>> fib2(2000)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597]

当然,也可以把返回值作为结果给存起来



>>> f2000 = fib2(2000)
>>> f2000
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597]