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 Django批量导入不重复数据
Mar 25 Python
Python中音频处理库pydub的使用教程
Jun 07 Python
Django后台获取前端post上传的文件方法
May 28 Python
Django 连接sql server数据库的方法
Jun 30 Python
python 产生token及token验证的方法
Dec 26 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
Jul 01 Python
使用Python opencv实现视频与图片的相互转换
Jul 08 Python
Python实现基于SVM的分类器的方法
Jul 19 Python
python输入错误后删除的方法
Oct 12 Python
Keras 数据增强ImageDataGenerator多输入多输出实例
Jul 03 Python
python使用Word2Vec进行情感分析解析
Jul 31 Python
Python创建临时文件和文件夹
Aug 05 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读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
php引用和拷贝的区别知识点总结
2019/09/23 PHP
基于thinkphp6.0的success、error实现方法
2019/11/05 PHP
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
js arguments,jcallee caller用法总结
2013/11/30 Javascript
javascript中加号(+)操作符的一些神奇作用
2014/06/06 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
jQuery实现点击水纹波动动画
2016/04/10 Javascript
通用无限极下拉菜单的实现代码
2016/05/31 Javascript
webpack多入口文件页面打包配置详解
2018/01/09 Javascript
vue中子组件向父组件传递数据的实例代码(实现加减功能)
2018/04/20 Javascript
H5+C3+JS实现双人对战五子棋游戏(UI篇)
2020/05/28 Javascript
JS如何获取地址栏的参数实例讲解
2018/10/06 Javascript
nodejs中使用worker_threads来创建新的线程的方法
2021/01/22 NodeJs
[33:23]Secret vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python中偏函数partial用法实例分析
2015/07/08 Python
Python OpenCV处理图像之滤镜和图像运算
2018/07/10 Python
python 处理string到hex脚本的方法
2018/10/26 Python
Python 元组操作总结
2019/09/18 Python
python读取图片的几种方式及图像宽和高的存储顺序
2020/02/11 Python
Django接收照片储存文件的实例代码
2020/03/07 Python
Django中的AutoField字段使用
2020/05/18 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
中国文明网签名寄语
2014/01/18 职场文书
大学学生会竞选演讲稿
2014/04/25 职场文书
党员群众路线对照检查材料思想汇报
2014/09/17 职场文书
领导班子民主生活会整改措施(工商局)
2014/09/21 职场文书
法人单位授权委托书范文
2014/10/06 职场文书
2014年电工工作总结
2014/11/20 职场文书
2014年仓库管理工作总结
2014/12/17 职场文书
无锡灵山大佛导游词
2015/02/09 职场文书
终止合同协议书范本
2016/03/22 职场文书
python实现腾讯滑块验证码识别
2021/04/27 Python
Java无向树分析 实现最小高度树
2022/04/09 Javascript
Mysql中mvcc各场景理解应用
2022/08/05 MySQL