python 函数定义——简单定义

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

定义一个 Fibonacci 函数:

1
2
3
4
5
6
7
8
>>> 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

1
2
>>> 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 有点相似,直接输入函数名,将返回函数的入口地址

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

1
2
>>> fib
<function fib at 0x7fc0c4aee668>

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

1
>>> f = fib

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

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

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

1
2
3
4
5
6
7
8
9
10
>>> 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]

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

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