python函数定义和调用过程详解

 更新时间:2020年02月09日 14:58:44   作者:郭雪原  
这篇文章主要介绍了python函数定义和调用过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了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+wxPython实现一个简单的音乐播放器

    Python+wxPython实现一个简单的音乐播放器

    这篇文章主要为大家详细介绍了如何使用Python编程语言和wxPython模块创建一个简单的音乐播放器,文中的示例代码讲解详细,感兴趣的可以了解下
    2023-09-09
  • 浅析Python中的赋值和深浅拷贝

    浅析Python中的赋值和深浅拷贝

    Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果。接下来通过本文给大家分享Python中的赋值和深浅拷贝,感兴趣的朋友一起看看吧
    2017-08-08
  • Python 实现list,tuple,str和dict之间的相互转换

    Python 实现list,tuple,str和dict之间的相互转换

    这篇文章主要介绍了Python 实现list,tuple,str和dict之间的相互转换,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Python的信号库Blinker用法详解

    Python的信号库Blinker用法详解

    在本篇文章里小编给大家整理了一篇关于Python的信号库Blinker用法详解内容,有兴趣的朋友们可以学习下。
    2020-12-12
  • python中通过预先编译正则表达式提高效率

    python中通过预先编译正则表达式提高效率

    Python是一个很酷的语言,因为你可以在很短的时间内利用很少的代码做很多事情,再加上正则表达式就更能体现其效果,下面这篇文章主要给大家介绍了关于python中通过预先编译正则表达式提高效率的相关资料,需要的朋友可以参考下。
    2017-09-09
  • 四个Python操作Excel的常用脚本分享

    四个Python操作Excel的常用脚本分享

    在数字化时代,很多人工作中经常和excel打交道。本文和大家分享四个Python操作excel的脚本,让你工作效率更高,需要的小伙伴可以参考一下
    2022-11-11
  • python文件名批量重命名脚本实例代码

    python文件名批量重命名脚本实例代码

    这篇文章主要给大家介绍了关于python文件名批量重命名脚本的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析

    python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析

    这篇文章主要介绍了python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • python实战游戏之史上最难最虐的扫雷游戏没有之一

    python实战游戏之史上最难最虐的扫雷游戏没有之一

    这篇文章主要介绍了使用 python 实现扫雷游戏,不同于传统过时的扫雷,今天我们用 Python 增加了新花样,文中给大家介绍的非常详细,需要的朋友可以参考下
    2021-09-09
  • java直接调用python脚本的例子

    java直接调用python脚本的例子

    有时需求使用JAVA直接调用python脚本,执行一些服务器监控的事情。 本文给出一个java直接调用python脚本的例子
    2014-02-02

最新评论