美文网首页
python学习-闭包问题

python学习-闭包问题

作者: scarlett的小本子 | 来源:发表于2017-11-16 17:19 被阅读0次

如果试图在一个内部函数里对外部作用域(不包括外部函数的外部作用域)的变量进行引用,内部函数就会被认为是闭包。

闭包实例

对于func2函数来说,对在func1函数的整个作用域(func2函数的非全局作用域的外部作用)的变量x进行引用,自此就可以说func2函数就是所谓的闭包。由于闭包本身是基于内部函数的概念,所以不能在外部函数的外部作用域对被不含进行调用。

既然是基于内部函数这一概念而来,自然对于内部函数来说对引用外部函数作用域内的变量进行修改,将会启动解释器的屏蔽机制。x*=x的左值此时是内部函数作用域里的变量,此时试图将没有定义的数据进行平方操作,因此报错。

解决方法1:

应用容器类型(list,tuple之类的)存放外部函数作用域的变量从而不会被屏蔽机制屏蔽掉,因为容器类型不是存放在栈里面。

解决方法2(python3之后的解决办法):

nonlocal关键字

相关文章

  • python学习-闭包问题

    如果试图在一个内部函数里对外部作用域(不包括外部函数的外部作用域)的变量进行引用,内部函数就会被认为是闭包。 对于...

  • python闭包学习

    参考文章 python闭包python闭包一步一步教你认识Python闭包深入浅出python闭包

  • python函数之闭包

    目录 python函数之闭包什么是闭包python中的namespace闭包的条件闭包的优点 python函数之闭...

  • Python 闭包使用注意点

    1 Python 闭包 今天,聊下 python 的闭包。在函数编程中经常用到闭包。 闭包是什么,它是怎么产生的及...

  • python之闭包

    1、什么是闭包? 2、闭包有什么用? 3、闭包的应用场景? 今天带着以上三个问题来学习闭包。 首先说明:闭包,并不...

  • Python装饰器

    【写在前面】在学习python装饰器之前呢,先要对python中的闭包函数有一定的理解,附上一篇关于闭包的文章(写...

  • Python—闭包与装饰器

    将之前学习Python的笔记整理记录下来。 闭包 装饰器

  • 草根学Python(十五) 闭包(解决一个需求了解闭包流程)

    网络上介绍 Python 闭包的文章已经很多了,本文将通过解决一个需求问题来了解闭包。 这个需求是这样的,我们需要...

  • python高级之闭包

    python高级之闭包 什么是闭包? 闭包(closure)是函数式编程的重要的语法结构。闭包也是一种组织代码的结...

  • 学Python的012天

    原创:XIAO油菜花学习进度记录:《零基础入门学习Python》P21:函数:内嵌函数和闭包《Python开发入门...

网友评论

      本文标题:python学习-闭包问题

      本文链接:https://www.haomeiwen.com/subject/xotrvxtx.html