python函数定义和调用过程详解


Posted in Python onFebruary 09, 2020

这篇文章主要介绍了python函数定义和调用过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

我们可以创建一个函数来列出费氏数列

>>> 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

函数的调用会为函数局部变量生产一个新的符号表。确切说,所有函数中的变量赋值都是将值存储在局部符号表。变量引用首先在局部符号表中查找,然后是包含函数的局部符号表,然后是全局符号表,最后是内置名字表。因此,局部变量不能在函数中直接赋值(除非用global),尽管他们可以被引用。

函数引用的实参在函数被调用的时候引入局部符号表,因此实参总是传值调用(该值通常指的是对象的引用,而不是该对象的值),一个函数被另一个函数调用的时候,一个新的局部符号表在调用过程中被创建。python的函数是以传址的方式工作,当调用一个函数的时候,改变指针指向。

一个函数定义的时候会讲函数名引入当前子都表。函数名指代的值会被解析器当作用户定义函数的类型。这个值可以赋予其他的名字,然后其他的名字也可以被当作函数使用,这可以作为通用的重命名机制:

>>> fib
<function fib at 10042ed0>
>>> f = fib
>>> f(100)
0 1 1 2 3 5 8 13 21 34 55 89

你可能觉得fib不是一个函数而是一个方法,因为他没有返回值,实际上,没有带return的函数也返回了一个值,就是none(内建名称),如果你想看到这个值,可以打印出来:

>>> fib(0)
>>> print(fib(0))
None

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 学习笔记
Dec 27 Python
深入理解Python中的*重复运算符
Oct 28 Python
Python for循环生成列表的实例
Jun 15 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
Aug 13 Python
使用python实现unix2dos和dos2unix命令的例子
Aug 13 Python
Python 静态方法和类方法实例分析
Nov 21 Python
python输出pdf文档的实例
Feb 13 Python
在脚本中单独使用django的ORM模型详解
Apr 01 Python
Python HTTP下载文件并显示下载进度条功能的实现
Apr 02 Python
python tqdm实现进度条的示例代码
Nov 10 Python
解决numpy数组互换两行及赋值的问题
Apr 17 Python
python基础之类属性和实例属性
Oct 24 Python
详解python 破解网站反爬虫的两种简单方法
Feb 09 #Python
Python字典深浅拷贝与循环方式方法详解
Feb 09 #Python
Python文件操作方法详解
Feb 09 #Python
Python列表操作方法详解
Feb 09 #Python
Python2与Python3的区别详解
Feb 09 #Python
python默认参数调用方法解析
Feb 09 #Python
Python集合操作方法详解
Feb 09 #Python
You might like
php图片验证码代码
2008/03/27 PHP
php 定义404页面的实现代码
2012/11/19 PHP
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
2015/12/24 PHP
PHP简单实现记录网站访问量功能示例
2018/06/06 PHP
PHP基于进程控制函数实现多线程
2020/12/09 PHP
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
jquery trigger伪造a标签的click事件取代window.open方法
2014/06/23 Javascript
网页收藏夹显示ICO图标(代码少)
2015/08/04 Javascript
纯CSS3代码实现滑动开关效果
2015/08/19 Javascript
jQuery Easyui 验证两次密码输入是否相等
2016/05/13 Javascript
Angular中ng-bind和ng-model的区别实例详解
2017/04/10 Javascript
jQuery查找dom的几种方法效率详解
2017/05/17 jQuery
Vue.js结合Ueditor富文本编辑器的实例代码
2017/07/11 Javascript
nodeJS模块简单用法示例
2018/04/21 NodeJs
Vue仿支付宝支付功能
2018/05/25 Javascript
vue实现键盘输入支付密码功能
2018/08/18 Javascript
Angular 利用路由跳转到指定页面的指定位置方法
2018/08/31 Javascript
使用Layui搭建后台管理界面的操作方法
2019/09/20 Javascript
深度剖析使用python抓取网页正文的源码
2014/06/11 Python
python学习入门细节知识点
2018/03/29 Python
Django中使用Celery的教程详解
2018/08/24 Python
Python 访问限制 private public的详细介绍
2018/10/16 Python
​如何愉快地迁移到 Python 3
2019/04/28 Python
python 解决flask uwsgi 获取不到全局变量的问题
2019/12/22 Python
Python如何获取Win7,Win10系统缩放大小
2020/01/10 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
2020/04/20 Python
python相对企业语言优势在哪
2020/06/12 Python
amazeui时间组件的实现示例
2020/08/18 HTML / CSS
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
关爱老人标语
2014/06/21 职场文书
三好生演讲稿
2014/09/12 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
驳回起诉裁定书
2015/05/19 职场文书
Redis 常见使用场景
2021/08/30 Redis