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
- Python function 函数定义
- ~function(){}()函数定义
- 定义函数一定要用function
- 042.Function 函数的定义
- 042.Function 函数的定义
- Python Function 函数
- Python学习笔记 - function调用和定义
- js function定义函数使用心得
- js function定义函数使用心得
- Javascript 使用function定义构造函数
- CREATE FUNCTION sqlserver用户定义函数
- js function定义函数使用心得
- js function定义函数使用小结
- js function定义函数使用心得
- js function定义函数的方法
- JavaScript 使用关键字 function 定义函数
- python 条件定义函数
- python 定义函数
- 周记20140216
- 黑马程序员_final关键字
- exit与_exit区别
- 说说Oracle索引的原理(面试题)
- 电源输出端电容的选择
- Python function 函数定义
- 在iOS上实现瀑布流界面
- Ubuntu 为Codeblocks配置OpenCV
- 中小企业需要大数据吗?要解答这个问题,企业(或其他机构)首先要仔细分析清楚自己的信息现状
- Scrum敏捷开发之角色
- QT5静态编译和使用
- 自定义iOS的状态栏
- OpenCV级联分类器训练
- Java学习之交通项目