Python function 函数定义

来源:互联网 发布:mac 怎么装office 编辑:程序博客网 时间:2024/05/11 06:26


函数定义

>>> def fib(n):    # write Fibonacci series up to n...     """Print a Fibonacci series up to n."""...     a, b = 0, 1...     while a < n:...         print(a, end=' ')...         a, b = b, a+b...     print()...>>> # Now call the function we just defined:... fib(2000)0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597

1、 关键字 def 表示一个函数定义的开始。后面必须跟 函数名称 和 用括号括起来的参数序列。函数体 从下一行开始,并且必须缩进

2、函数体的第一行是一个可选的 字符串常量,也就是函数的注释。用于在线或者打印生成文档,docstring。养成这个习惯

3、函数调用的传参是通过 call by value(通常是 value 的 object 引用,而不是 object 的 value 值本身)

4、函数的执行会引入一个 symbol table 用于存放函数的局部变量,所有变量赋值都将值存储在 symbol table 中。变量引用首先查找局部 symbole table,然后查找闭合函数的 symbole table,然后是全局的 symbol table 最后是 Python 内置的变量名。

5、函数的参数,是在函数被调用时传进来放在局部 symbol table 中的,当函数调用其他 function 时,会为这次调用创建一个新的局部 symbol table

6、一个函数定义将函数名称引入到当前 symbole table 中了。函数名的值有一个解释器认识的 user-defined 函数类型。这个值可以赋值给另一个变量名称,然后这个变量名称也可以当作一个 函数 来使用了。这是一般的重命名机制:
>>> fib<function fib at 10042ed0>>>> f = fib>>> f(100)0 1 1 2 3 5 8 13 21 34 55 89

7、虽然没有 return 语句,但是 Python 仍然返回了一个值 None(系统内置名称)
>>> fib(0)>>> print(fib(0))None

8、写一个函数返回一个 list 而不是打印 Fibonacci 序列也是很简单的:
>>> def fib2(n): # return Fibonacci series up to n...     """Return a list containing the Fibonacci series up to n."""...     result = []...     a, b = 0, 1...     while a < n:...         result.append(a)    # see below...         a, b = b, a+b...     return result...>>> f100 = fib2(100)    # call it>>> f100                # write the result[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

0 0