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中的作用域规则详解
Jan 30 Python
Python生成数字图片代码分享
Oct 31 Python
分享6个隐藏的python功能
Dec 07 Python
理解python中生成器用法
Dec 20 Python
5个很好的Python面试题问题答案及分析
Jan 19 Python
python中将一个全部为int的list 转化为str的list方法
Apr 09 Python
Python实现时钟显示效果思路详解
Apr 11 Python
PyCharm安装第三方库如Requests的图文教程
May 18 Python
利用Python读取txt文档的方法讲解
Jun 23 Python
Python简单爬虫导出CSV文件的实例讲解
Jul 06 Python
解决python调用自己文件函数/执行函数找不到包问题
Jun 01 Python
Python实现简单猜数字游戏
Feb 03 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图片处理之图片旋转和图片翻转实例
2014/11/19 PHP
php读取文件内容的方法汇总
2015/01/24 PHP
比较搞笑的js陷阱题
2010/02/07 Javascript
jQuery Jcrop插件实现图片选取功能
2011/11/23 Javascript
jquery ztree实现下拉树形框使用到了json数据
2014/05/14 Javascript
浅谈javascript中onbeforeunload与onunload事件
2015/12/10 Javascript
JS判断字符串变量是否含有某个字串的实现方法
2016/06/03 Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
2016/06/06 Javascript
引用jquery框架后出错的解决方法
2016/08/09 Javascript
Angular 2.x学习教程之结构指令详解
2017/05/25 Javascript
js图片轮播插件的封装
2017/07/21 Javascript
详解组件库的webpack构建速度优化
2018/06/18 Javascript
cordova+vue+webapp使用html5获取地理位置的方法
2019/07/06 Javascript
layui checkbox默认选中,获取选中值,清空所有选中项的例子
2019/09/02 Javascript
javascript/jquery实现点击触发事件的方法分析
2019/11/11 jQuery
Vue router安装及使用方法解析
2020/12/02 Vue.js
微信小程序实现首页弹出广告
2020/12/03 Javascript
基于python3 类的属性、方法、封装、继承实例讲解
2017/09/19 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
2019/02/17 Python
通过Turtle库在Python中绘制一个鼠年福鼠
2020/02/03 Python
Python print不能立即打印的解决方式
2020/02/19 Python
python脚本实现mp4中的音频提取并保存在原目录
2020/02/27 Python
德国箱包网上商店:koffer24.de
2016/07/27 全球购物
床上用品全球在线购物:BeddingInn
2016/12/18 全球购物
英国简约舒适女装品牌:Great Plains
2018/07/27 全球购物
都柏林通行卡/城市通票:The Dublin Pass
2020/02/16 全球购物
这76道Java面试题及答案,祝你能成功通过面试
2016/04/16 面试题
女大学生个人求职信
2013/12/09 职场文书
信息学院毕业生自荐信范文
2014/03/04 职场文书
村党的群众路线教育实践活动总结材料
2014/10/31 职场文书
2014年食堂工作总结
2014/11/20 职场文书
导游词欢迎词
2015/02/02 职场文书
汽车修理厂管理制度
2015/08/05 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书
python中sqllite插入numpy数组到数据库的实现方法
2021/06/21 Python
微信小程序 根据不同用户切换不同TabBar
2022/04/21 Javascript