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中装饰器的用法
Apr 27 Python
Python中splitlines()方法的使用简介
May 20 Python
tensorflow学习笔记之简单的神经网络训练和测试
Apr 15 Python
python中copy()与deepcopy()的区别小结
Aug 03 Python
Django unittest 设置跳过某些case的方法
Dec 26 Python
Django异步任务之Celery的基本使用
Mar 23 Python
python 猴子补丁(monkey patch)
Jun 26 Python
基于python监控程序是否关闭
Jan 14 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
Feb 12 Python
django模板获取list中指定索引的值方式
May 14 Python
python实现进度条的多种实现
Apr 29 Python
python在package下继续嵌套一个package
Apr 14 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
咖啡的种类和口感
2021/03/03 新手入门
PHP5中的this,self和parent关键字详解教程
2007/03/19 PHP
php获取网页内容方法总结
2008/12/04 PHP
php中try catch捕获异常实例详解
2014/11/21 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
JavaScript isArray()函数判断对象类型的种种方法
2010/10/11 Javascript
js读写cookie实现一个底部广告浮层效果的两种方法
2013/12/29 Javascript
JS实现很酷的EMAIL地址添加功能实例
2015/02/28 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
2016/07/01 Javascript
微信小程序之圆形进度条实现思路
2018/02/22 Javascript
layui之select的option叠加问题的解决方法
2018/03/08 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
2018/07/05 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
vue微信分享插件使用方法详解
2020/02/18 Javascript
ES6中new Function()语法及应用实例分析
2020/02/19 Javascript
[03:43]2014DOTA2西雅图国际邀请赛 newbee战队巡礼
2014/07/07 DOTA
cmd运行python文件时对结果进行保存的方法
2018/05/16 Python
python字符串常用方法
2018/06/14 Python
Python使用paramiko操作linux的方法讲解
2019/02/25 Python
Python 使用 docopt 解析json参数文件过程讲解
2019/08/13 Python
python创建子类的方法分析
2019/11/28 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
Django项目创建及管理实现流程详解
2020/10/13 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例
2014/05/08 HTML / CSS
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
高清屏中使用Canvas绘图出现模糊的问题及解决方法
2019/06/03 HTML / CSS
高级销售员求职信
2013/10/25 职场文书
自我评价怎么写正确呢?
2013/12/02 职场文书
驾驶员培训方案
2014/05/01 职场文书
秋冬农业生产标语
2014/10/09 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
4S店收银员岗位职责
2015/04/07 职场文书
浅谈如何提高PHP代码的质量
2021/05/28 PHP
基于Java的MathML转图片的方法(示例代码)
2021/06/23 Java/Android
使用redis实现延迟通知功能(Redis过期键通知)
2021/09/04 Redis