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 相关文章推荐
wxPython框架类和面板类的使用实例
Sep 28 Python
Python制作CSDN免积分下载器
Mar 10 Python
Python使用logging结合decorator模式实现优化日志输出的方法
Apr 16 Python
使用python3.5仿微软记事本notepad
Jun 15 Python
python学生管理系统代码实现
Apr 05 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
May 05 Python
python opencv捕获摄像头并显示内容的实现
Jul 11 Python
Pyorch之numpy与torch之间相互转换方式
Dec 31 Python
tensorflow使用指定gpu的方法
Feb 04 Python
为什么说python更适合树莓派编程
Jul 20 Python
Python为何不支持switch语句原理详解
Oct 21 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
Feb 04 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 中文处理技巧
2010/04/25 PHP
php中常用的预定义变量小结
2012/05/09 PHP
php中的Base62类(适用于数值转字符串)
2013/08/12 PHP
php多个文件及图片上传实例详解
2014/11/10 PHP
PHP 魔术变量和魔术函数详解
2015/02/25 PHP
php数据访问之增删改查操作
2016/05/09 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
php中curl和soap方式请求服务超时问题的解决
2018/06/11 PHP
DEFER怎么用?
2006/07/01 Javascript
js中的如何定位固定层的位置
2014/06/15 Javascript
Node.js文件操作方法汇总
2016/03/22 Javascript
第二次聊一聊JS require.js模块化工具的基础知识
2016/04/17 Javascript
Bootstrap表格和栅格分页实例详解
2016/05/20 Javascript
JS字符串去除连续或全部重复字符的实例
2018/03/08 Javascript
浅谈ng-zorro使用心得
2018/12/03 Javascript
javascript实现切割轮播效果
2019/11/28 Javascript
javascript this指向相关问题及改变方法
2020/11/19 Javascript
[00:53]TI3正赛第三天 DK怒破A队不败金身 现场国旗飘扬热血激昂
2013/08/10 DOTA
[01:13:51]TNC vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python实现dnspod自动更新dns解析的方法
2014/02/14 Python
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
2016/01/20 Python
python 系统调用的实例详解
2017/07/11 Python
Python内建模块struct实例详解
2018/02/02 Python
python方法生成txt标签文件的实例代码
2018/05/10 Python
python 将大文件切分为多个小文件的实例
2019/01/14 Python
Python 字符串类型列表转换成真正列表类型过程解析
2019/08/26 Python
如何使用Pytorch搭建模型
2020/10/26 Python
Regatta官网:英国最受欢迎的户外服装和鞋类品牌
2019/05/01 全球购物
Kipling意大利官网:世界著名的时尚休闲包袋品牌
2019/06/05 全球购物
澳大利亚办公室装修:JasonL Office Furniture
2019/06/25 全球购物
Nº21官方在线商店:numeroventuno.com
2019/09/26 全球购物
简单租房协议书
2014/04/09 职场文书
文明礼仪标语
2014/06/13 职场文书
村安全生产责任书
2014/08/25 职场文书
科学发展观标语
2014/10/08 职场文书
学校运动会感想
2015/08/10 职场文书