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实现提取百度搜索结果的方法
May 19 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
Dec 25 Python
TF-IDF算法解析与Python实现方法详解
Nov 16 Python
python编程测试电脑开启最大线程数实例代码
Feb 09 Python
TensorFlow利用saver保存和提取参数的实例
Jul 26 Python
Python GUI布局尺寸适配方法
Oct 11 Python
python画图——实现在图上标注上具体数值的方法
Jul 08 Python
Django项目中使用JWT的实现代码
Nov 04 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
Dec 10 Python
解决python虚拟环境切换无效的问题
Apr 30 Python
Django使用rest_framework写出API
May 21 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
May 27 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&amp;&amp;mysql)四
2006/10/09 PHP
一个简单的php实现的MySQL数据浏览器
2007/03/11 PHP
php下将XML转换为数组
2010/01/01 PHP
fckeditor上传文件按日期存放及重命名方法
2015/05/22 PHP
php中namespace use用法实例分析
2016/01/22 PHP
Zend Framework教程之Application用法实例详解
2016/03/14 PHP
Zend Framework教程之Zend_Config_Ini用法分析
2016/03/23 PHP
PHP安装memcache扩展的步骤讲解
2019/02/14 PHP
Javascript----文件操作
2007/01/18 Javascript
js 获取浏览器高度和宽度值(多浏览器)
2009/09/02 Javascript
在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
2011/06/02 Javascript
实用的Jquery选项卡TAB示例代码
2013/08/28 Javascript
jquery创建表格(自动增加表格)代码分享
2013/12/25 Javascript
javascript 获取浏览器版本
2015/01/21 Javascript
JavaScript数组常用方法
2015/03/02 Javascript
jQuery常用知识点总结以及平时封装常用函数
2016/02/23 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
JS按条件 serialize() 对应标签的使用方法
2017/07/24 Javascript
微信小程序之前台循环数据绑定
2017/08/18 Javascript
JS遍历JSON数组及获取JSON数组长度操作示例【测试可用】
2018/12/12 Javascript
前端js中的事件循环eventloop机制详解
2019/05/15 Javascript
vue实现图片懒加载的方法分析
2020/02/05 Javascript
python逐行读取文件内容的三种方法
2014/01/20 Python
在Python中操作字典之clear()方法的使用
2015/05/21 Python
浅析Python中元祖、列表和字典的区别
2016/08/17 Python
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
python如何对实例属性进行类型检查
2018/03/20 Python
python 创建一个空dataframe 然后添加行数据的实例
2018/06/07 Python
python如何实现一个刷网页小程序
2018/11/27 Python
django之对FileField字段的upload_to的设定方法
2019/07/28 Python
python基于Kivy写一个图形桌面时钟程序
2021/01/28 Python
Flask处理Web表单的实现方法
2021/01/31 Python
网络编辑岗位职责范本
2014/02/10 职场文书
预备党员期盼十八届四中全会召开思想汇报
2014/10/17 职场文书
2014超市收银员工作总结
2014/11/13 职场文书
城管个人总结
2015/02/28 职场文书