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通过imaplib模块读取gmail里邮件的方法
May 08 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
Jun 21 Python
python微信好友数据分析详解
Nov 19 Python
Python列表list排列组合操作示例
Dec 18 Python
Python3 使用cookiejar管理cookie的方法
Dec 28 Python
Python生成MD5值的两种方法实例分析
Apr 26 Python
学习python分支结构
May 17 Python
深入了解Django View(视图系统)
Jul 23 Python
利用Python实现kNN算法的代码
Aug 16 Python
TensorFlow学习之分布式的TensorFlow运行环境
Feb 05 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
python基于openpyxl生成excel文件
Dec 23 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
B2K与车机的中波PK
2021/03/02 无线电
PHP经典面试题之设计模式(经常遇到)
2015/10/15 PHP
php观察者模式应用场景实例详解
2017/02/03 PHP
PHP单例模式简单用法示例
2017/06/23 PHP
javascript属性访问表达式用法分析
2015/04/25 Javascript
jQuery实现的漂亮表单效果代码
2015/08/18 Javascript
JS基于Mootools实现的个性菜单效果代码
2015/10/21 Javascript
jQuery xml字符串的解析、读取及查找方法
2016/03/01 Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
2016/03/07 Javascript
浅谈js中StringBuffer类的实现方法及使用
2016/09/02 Javascript
利用jQuery插件imgAreaSelect实现获得选择域的图像信息
2016/12/02 Javascript
JavaScript仿支付宝6位数字密码输入框
2016/12/29 Javascript
ztree实现左边动态生成树右边为内容详情功能
2017/11/03 Javascript
在vue中使用jointjs的方法
2018/03/24 Javascript
深入理解NodeJS 多进程和集群
2018/10/17 NodeJs
Vue中的vue-resource示例详解
2018/11/02 Javascript
用Python进行行为驱动开发的入门教程
2015/04/23 Python
Python argv用法详解
2016/01/08 Python
python中的错误处理
2016/04/10 Python
python对json的相关操作实例详解
2017/01/04 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
运行django项目指定IP和端口的方法
2018/05/14 Python
python梯度下降法的简单示例
2018/08/31 Python
深入解析python中的实例方法、类方法和静态方法
2019/03/11 Python
Django实现web端tailf日志文件功能及实例详解
2019/07/28 Python
pytorch梯度剪裁方式
2020/02/04 Python
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
法院实习人员自我鉴定
2013/09/26 职场文书
公安机关查摆剖析材料
2014/10/10 职场文书
儿园租房协议书范本
2014/12/02 职场文书
拾金不昧感谢信
2015/01/21 职场文书
酒店员工管理制度
2015/08/05 职场文书
小学大队长竞选稿
2015/11/20 职场文书
创业计划书之家教托管
2019/09/25 职场文书
Python图片处理之图片裁剪教程
2021/05/27 Python
mysql主从复制的实现步骤
2021/10/24 MySQL