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 相关文章推荐
Python3基础之list列表实例解析
Aug 13 Python
把项目从Python2.x移植到Python3.x的经验总结
Apr 20 Python
Python中模块string.py详解
Mar 12 Python
使用C++扩展Python的功能详解
Jan 12 Python
Python将视频或者动态图gif逐帧保存为图片的方法
Sep 10 Python
Pytorch 多维数组运算过程的索引处理方式
Dec 27 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
Mar 05 Python
在脚本中单独使用django的ORM模型详解
Apr 01 Python
TensorFLow 数学运算的示例代码
Apr 21 Python
如何查看python关键字
Jan 17 Python
Pytest allure 命令行参数的使用
Apr 18 Python
详解Django中 render() 函数的使用方法
Apr 22 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中取得image按钮传递的name值
2006/10/09 PHP
如何使用脚本模仿登陆过程
2006/11/22 PHP
php Smarty模板生成html文档的方法
2010/04/12 PHP
PHP类中Static方法效率测试代码
2010/10/17 PHP
php实现aes加密类分享
2014/02/16 PHP
JSON字符串传到后台PHP处理问题的解决方法
2016/06/05 PHP
PHP简单获取多个checkbox值的方法
2016/06/13 PHP
js 遍历对象的属性的代码
2011/12/29 Javascript
JavaScript创建类/对象的几种方式概述及实例
2013/05/06 Javascript
jquery使用hide方法隐藏指定id的元素
2015/03/30 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
2015/11/30 Javascript
jQuery基于muipicker实现仿ios时间选择
2016/02/22 Javascript
JavaScript仿网易选项卡制作代码
2016/10/06 Javascript
react.js 获取真实的DOM节点实例(必看)
2017/04/17 Javascript
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
2018/02/06 Javascript
vue.js2.0点击获取自己的属性和jquery方法
2018/02/23 jQuery
JS无限级导航菜单实现方法
2019/01/05 Javascript
JavaScript 反射和属性赋值实例解析
2019/10/28 Javascript
Python getopt模块处理命令行选项实例
2014/05/13 Python
Python实现感知机(PLA)算法
2017/12/20 Python
python logging日志模块以及多进程日志详解
2018/04/18 Python
Python+OpenCV感兴趣区域ROI提取方法
2019/01/10 Python
Docker部署Python爬虫项目的方法步骤
2020/01/19 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
利用CSS3 动画 绘画 圆形动态时钟
2018/03/20 HTML / CSS
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
巴西宠物商店:Cobasi
2019/04/19 全球购物
美国孩之宝玩具官网:Hasbro Pulse
2019/06/24 全球购物
英国最大最好的无人机商店:Drones Direct
2019/07/12 全球购物
高一家长会邀请函
2014/01/12 职场文书
《社戏》教学反思
2014/04/15 职场文书
2015年敬老月活动总结
2015/03/27 职场文书
详解Python中__new__方法的作用
2022/03/31 Python
Win11远程连接不上怎么办?Win11远程桌面用不了的解决方法
2022/08/05 数码科技