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编程入门之Hello World的三种实现方式
Nov 13 Python
Python单链表简单实现代码
Apr 27 Python
读写json中文ASCII乱码问题的解决方法
Nov 05 Python
python如何获取服务器硬件信息
May 11 Python
PyQt5 pyqt多线程操作入门
May 05 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
Aug 09 Python
pytorch GAN伪造手写体mnist数据集方式
Jan 10 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
Feb 28 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
Mar 11 Python
解决python存数据库速度太慢的问题
Apr 23 Python
Jupyter Notebook 如何修改字体和大小以及更改字体样式
Jun 03 Python
Python制作春联的示例代码
Jan 22 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
header导出Excel应用示例
2014/01/24 PHP
浅谈PHP安全防护之Web攻击
2017/01/03 PHP
XHTML-Strict 内允许出现的标签
2006/12/11 Javascript
JQuery在页面中添加和除移DOM示例代码
2013/06/24 Javascript
JavaScript插件化开发教程 (二)
2015/01/27 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
2015/04/01 Javascript
JavaScript中的ajax功能的概念和示例详解
2016/10/17 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
2016/12/29 Javascript
js时间戳格式化成日期格式的多种方法介绍
2017/02/16 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
2017/04/21 Javascript
解决VUEX刷新的时候出现数据消失
2017/07/03 Javascript
JavaScript的setter与getter方法
2017/11/29 Javascript
react配合antd组件实现的管理系统示例代码
2018/04/24 Javascript
Vue插件之滑动验证码
2019/09/21 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
JS正则表达式验证端口范围(0-65535)
2020/01/06 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
Windows下Python使用Pandas模块操作Excel文件的教程
2016/05/31 Python
详解python函数传参是传值还是传引用
2018/01/16 Python
在pandas中一次性删除dataframe的多个列方法
2018/04/10 Python
一篇文章读懂Python赋值与拷贝
2018/04/19 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
Django实现WebSSH操作物理机或虚拟机的方法
2019/11/06 Python
Python通过Pillow实现图片对比
2020/04/29 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
基于nexus3配置Python仓库过程详解
2020/06/15 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
Mamaearth官方网站:印度母婴护理产品公司
2019/10/06 全球购物
高中英语演讲稿范文
2014/04/24 职场文书
房屋鉴定委托书范本
2014/09/23 职场文书
党员干部三严三实心得体会
2014/10/13 职场文书
2014年保育员个人工作总结
2014/12/02 职场文书
2014年移动公司工作总结
2014/12/08 职场文书
幼儿园万圣节活动总结
2015/05/05 职场文书
Python如何让字典保持有序排列
2022/04/29 Python
css让页脚保持在底部位置的四种方案
2022/07/23 HTML / CSS