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通过BF算法实现关键词匹配的方法
Mar 13 Python
Python中使用items()方法返回字典元素对的教程
May 21 Python
Python3实现Web网页图片下载
Jan 28 Python
python基于ID3思想的决策树
Jan 03 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
Jul 13 Python
对Pandas MultiIndex(多重索引)详解
Nov 16 Python
set在python里的含义和用法
Jun 24 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
May 11 Python
keras 多gpu并行运行案例
Jun 10 Python
Django和Ueditor自定义存储上传文件的文件名
Feb 25 Python
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
May 27 Python
Python anaconda安装库命令详解
Oct 16 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 命令行参数详解及应用
2011/05/18 PHP
php操作SVN版本服务器类代码
2011/11/27 PHP
PHP常用的排序和查找算法
2015/08/06 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
jquery 防止表单重复提交代码
2010/01/21 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
2013/12/16 Javascript
AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
2014/06/06 Javascript
PHP PDO操作总结
2014/11/17 Javascript
jquery判断至少有一个checkbox被选中的方法
2015/06/05 Javascript
js提交form表单,并传递参数的实现方法
2016/05/25 Javascript
jQuery根据name属性进行查找的用法分析
2016/06/23 Javascript
jsonp跨域及实现百度首页联想功能的方法
2018/08/30 Javascript
vue观察模式浅析
2018/09/25 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
2019/05/05 Javascript
NodeJs 模仿SIP话机注册的方法
2019/06/21 NodeJs
JavaScript中的连续赋值问题实例分析
2019/07/12 Javascript
JavaScript实现随机五位数验证码
2019/09/27 Javascript
解决vue页面渲染但dom没渲染的操作
2020/07/27 Javascript
javascript实现时间日期的格式化的方法汇总
2020/08/06 Javascript
[02:20]DOTA2亚洲邀请赛 EHOME战队出场宣传片
2015/02/07 DOTA
python使用json序列化datetime类型实例解析
2018/02/11 Python
Django框架使用内置方法实现登录功能详解
2019/06/12 Python
python requests证书问题解决
2019/09/05 Python
python opencv实现简易画图板
2020/08/27 Python
美国购买和销售礼品卡平台:Raise
2017/01/13 全球购物
美国眼镜网站:EyeBuyDirect
2017/04/13 全球购物
mysql_pconnect()和mysql_connect()有什么区别
2012/05/25 面试题
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
同事打架检讨书
2014/02/04 职场文书
巾帼志愿者活动方案
2014/08/17 职场文书
夫妻分居协议书范本(有子女版)
2014/11/01 职场文书
中班上学期个人总结
2015/02/12 职场文书
羊脂球读书笔记
2015/06/30 职场文书
中学后勤工作总结2015
2015/07/22 职场文书
用Python实现屏幕截图详解
2022/01/22 Python