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中chr、unichr、ord字符函数之间的对比
Jun 16 Python
解决tensorflow模型参数保存和加载的问题
Jul 26 Python
PyQt5 在label显示的图片中绘制矩形的方法
Jun 17 Python
python3.6环境安装+pip环境配置教程图文详解
Jun 20 Python
python实现多进程通信实例分析
Sep 01 Python
python 插入日期数据到Oracle实例
Mar 02 Python
Python Scrapy多页数据爬取实现过程解析
Jun 12 Python
记录模型训练时loss值的变化情况
Jun 16 Python
Tensorflow与Keras自适应使用显存方式
Jun 22 Python
Python中的特殊方法以及应用详解
Sep 20 Python
python 实现超级玛丽游戏
Nov 25 Python
Python中快速掌握Data Frame的常用操作
Mar 31 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字符串 ==比较运算符的副作用
2009/10/21 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
2015/12/18 PHP
JavaScript 的方法重载效果
2009/08/07 Javascript
jquery 表单进行客户端验证demo
2009/08/24 Javascript
js中将字符串转换成json的三种方式
2011/01/12 Javascript
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
2011/11/14 Javascript
jquery使用$(element).is()来判断获取的tagName
2014/08/24 Javascript
ECMAScript6函数默认参数
2015/06/12 Javascript
jQuery横向擦除焦点图特效代码分享
2015/09/06 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
JavaScript来实现打开链接页面的简单实例
2016/06/02 Javascript
JS获取和修改元素样式的实例代码
2016/08/06 Javascript
详解Nodejs之npm&amp;package.json
2017/06/15 NodeJs
通过vue-cli来学习修改Webpack多环境配置和发布问题
2017/12/22 Javascript
vue.js实现标签页切换效果
2018/06/07 Javascript
js事件触发操作实例分析
2019/06/21 Javascript
js利用递归与promise 按顺序请求数据的方法
2019/08/30 Javascript
微信小程序实现电子签名并导出图片
2020/05/27 Javascript
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
2017/12/12 Python
Python实现Restful API的例子
2019/08/31 Python
python 生成器和迭代器的原理解析
2019/10/12 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
2020/04/14 Python
python绘制趋势图的示例
2020/09/17 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
亚洲独特体验旅游专家:eOasia
2018/08/15 全球购物
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
迪卡侬比利时官网:Decathlon比利时
2019/12/28 全球购物
毕业自荐信
2013/12/16 职场文书
生产总经理岗位职责
2013/12/19 职场文书
咖啡蛋糕店创业计划书
2014/01/28 职场文书
幼儿园新生开学寄语
2015/05/27 职场文书
《钓鱼的启示》教学反思
2016/02/18 职场文书
mysql数据库入门第一步之创建表
2021/05/14 MySQL
Python使用永中文档转换服务
2022/05/06 Python