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类定义的讲解
Nov 01 Python
Python数组定义方法
Apr 13 Python
python下10个简单实例代码
Nov 15 Python
详解Django中六个常用的自定义装饰器
Jul 04 Python
Python-while 计算100以内奇数和的方法
Jun 11 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
Aug 27 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
Oct 12 Python
python pygame实现滚动横版射击游戏城市之战
Nov 25 Python
基于python修改srt字幕的时间轴
Feb 03 Python
解决python -m pip install --upgrade pip 升级不成功问题
Mar 05 Python
Pycharm添加虚拟解释器报错问题解决方案
Oct 13 Python
tensorflow2.0教程之Keras快速入门
Feb 20 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 高手之路(一)
2006/10/09 PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
2015/01/22 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
Laravel框架实现简单的学生信息管理平台案例
2019/05/07 PHP
mysqli扩展无法在PHP7下升级问题的解决
2019/09/10 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
js下利用控制器载入对应脚本
2010/07/17 Javascript
javascript的渐进增强与平稳退化浅谈
2013/11/12 Javascript
前台js对象在后台转化java对象的问题探讨
2013/12/20 Javascript
jQuery中操控hidden、disable等无值属性的方法
2014/01/06 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
2015/11/02 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
2016/06/22 Javascript
Material(包括Material Icon)在Angular2中的使用详解
2018/02/11 Javascript
JavaScript 五大常见函数
2018/03/23 Javascript
JavaScript数组方法的错误使用例子
2018/09/13 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
微信小程序 wxParse插件显示视频问题
2019/09/27 Javascript
[53:13]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-GAMING
2014/05/22 DOTA
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
[01:18:36]LGD vs VP Supermajor 败者组决赛 BO3 第一场 6.10
2018/07/04 DOTA
python删除指定类型(或非指定)的文件实例详解
2015/07/06 Python
Python实现购物程序思路及代码
2017/07/24 Python
python通过Windows下远程控制Linux系统
2018/06/20 Python
利用Python如何批量修改数据库执行Sql文件
2018/07/29 Python
Python数据可视化教程之Matplotlib实现各种图表实例
2019/01/13 Python
Spongelle官网:美国的创意护肤洗护品牌
2019/05/15 全球购物
应届毕业生简历自我评价
2014/01/31 职场文书
《挑山工》的教学反思
2014/02/16 职场文书
2014年个人总结范文
2015/03/09 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
《地震中的父与子》教学反思
2016/02/16 职场文书
2016年少先队活动总结
2016/04/06 职场文书
阿里云服务器搭建Php+Apache运行环境的详细过程
2021/05/15 PHP
利用正则表达式匹配浮点型数据
2022/05/30 Java/Android