Python中的闭包

 更新时间:2021年11月01日 16:35:10   作者:一碗周  
这篇文章主要介绍了Python中的闭包,闭包在函数中提出的概念,简单来说就是一个函数定义中引用了函数外定义的变量,并且该函数可以在其定义环境外被执行。这样的一个函数我们称之为闭包,下面我们一起来看看文章内容的具体介绍

1、闭包概念

闭包在函数中提出的概念,简单来说就是一个函数定义中引用了函数外定义的变量,并且该函数可以在其定义环境外被执行。这样的一个函数我们称之为闭包。实际上闭包可以看做一种更加广义的函数概念。因为其已经不再是传统意义上定义的函数。

闭包这个概念不仅仅只有在Python中存在,在任何一个编程语言中都几乎存在。

2、闭包条件

闭包的条件:

  • 外部函数中定义了内部函数
  • 外部函数是有返回值
  • 返回值是:内部函数
  • 内部函数还引用了外部函数的变量

格式如下所示:

def 外部函数():
    ...
    def 内部函数():
        ...
    return 内部函数

示例代码:

def func():
    a = 100

    def inner_func():
        b = 200
        print(a, b)

    return inner_func


x = func()
print(x)  # <function func.<locals>.inner_func at 0x0000021704CD9620>
x()  # 100 200
# 这样就可以直接调用inner_func函数,如果return不返回一个内部函数的话是不会有任何输出的

3、闭包完成计数效果

使用闭包还可以完成计数器的效果

def generate_count():
    container = [0]

    def add_one():
        container[0] += 1
        print(f"这是第{container[0]}次调用")

    return add_one


count = generate_count()
count()  # 这是第1次调用
count()  # 这是第2次调用
count()  # 这是第3次调用

4、闭包的缺点及作用

闭包的缺点如下所示:

  • 作用域没有那么直观
  • 因为变量不会被垃圾回收所以有一定的内存占用问题。

闭包的作用如下所示:

  • 可以使用同级的作用域
  • 读取其他元素的内部变量
  • 延长作用域

到此这篇关于Python中的闭包的文章就介绍到这了,更多相关Python闭包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python实现漫天飘落的七彩花朵效果

    python实现漫天飘落的七彩花朵效果

    要实现漫天飘落的七彩花朵效果,你可以使用Python的图形库,如Pygame或Pyglet,这些库可以帮助你创建动画和图形效果,本文给大家介绍了如何使用python实现漫天飘落的七彩花朵效果,感兴趣的朋友可以参考下
    2024-01-01
  • Python装饰器实现几类验证功能做法实例

    Python装饰器实现几类验证功能做法实例

    下面小编就为大家带来一篇Python装饰器实现几类验证功能做法实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • python爬虫学习笔记之Beautifulsoup模块用法详解

    python爬虫学习笔记之Beautifulsoup模块用法详解

    这篇文章主要介绍了python爬虫学习笔记之Beautifulsoup模块用法,结合实例形式详细分析了python爬虫Beautifulsoup模块基本功能、原理、用法及操作注意事项,需要的朋友可以参考下
    2020-04-04
  • 16行Python代码实现微信聊天机器人并自动智能回复功能

    16行Python代码实现微信聊天机器人并自动智能回复功能

    聊天机器人自动智能回复给我们的生活带来了极大的便利,尤其在业务比较繁忙的时候,智能机器人给我们带来极大的方便,今天小编教大家一招通过16行代码实现微信聊天智能机器人,感兴趣的朋友一起看看吧
    2022-01-01
  • Python中的正则表达式与JSON数据交换格式

    Python中的正则表达式与JSON数据交换格式

    正则表达式 是一个特殊的字符序列,一个字符串是否与我们所设定的这样的字符序列,相匹配快速检索文本、实现替换文本的操作。这篇文章主要介绍了Python中的正则表达式与JSON ,需要的朋友可以参考下
    2019-07-07
  • Python类中方法getitem和getattr详解

    Python类中方法getitem和getattr详解

    这篇文章主要介绍了Python类中方法getitem和getattr详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python中dict排序的两种方法

    Python中dict排序的两种方法

    字典本身是无序的,所以它每次输出都是不一样的,顺序都是乱的,那么字典如何排序,本文主要介绍了Python中dict排序的两种方法,感兴趣的可以了解一下
    2024-01-01
  • Python桌面文件清理脚本分享

    Python桌面文件清理脚本分享

    这篇文章主要介绍了Python桌面文件清理脚本,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 解密Python中的描述符(descriptor)

    解密Python中的描述符(descriptor)

    这篇文章主要介绍了解密Python中的描述符(descriptor),本文详细讲解了描述符(descriptor)的作用、访问描述符、对描述符赋值、删除描述符等内容,需要的朋友可以参考下
    2015-06-06
  • Python基础之标准库和常用的第三方库案例教程

    Python基础之标准库和常用的第三方库案例教程

    这篇文章主要介绍了Python基础之标准库和常用的第三方库案例教程,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07

最新评论