Python名称空间和闭包

作者: 我爱学python | 来源:发表于2019-07-14 16:31 被阅读36次

    一、名称空间

      1、定义:又名 name space,顾名思义,就是存放名字的地方。比如:若变量x = 1,1存放在内存中,

          而名称空间正是存放名字x与1绑定关系的地方。

      2、分类:

          locals : 函数内的名称空间,包括局部变量和形参

           globals: 全局变量

            builtins:内置模块的名字空间

    注意:不同变量的作用域就是由这个变量所在的命名空间决定的。

    3、

    作用域(范围)

         全局范围:全局有效

         局部范围:局部有效

         查看作用域方法:globals(),locals()

      4、作用域的查找顺序:LEGB

        L:locals是函数内的名字空间

        E:enclosing(围住) 是外部嵌套函数的名字空间

        G:globals 全局变量

    B:builtins内置模块的名字空间

    实例:

    二、函数闭包

      1、定义:

    闭包就是函数定义和函数表达式位于另一个函数的函数体内(嵌套函数)。而且,这些内部函数可以访问

        它们所在的外部函数中声明的所有局部变量、参数,当其中一个这样的内部函数在包含它们的外部函数之外

        被调用时,就会形成闭包。也就是说,内部函数会在外部函数返回后被执行。而当这个内部函数执行时,它

        仍然必需访问其外部函数的局部变量、参数以及其他内部函数。这些局部变量、参数和函数声明(最初时)

        的值是外部函数返回时的值,但也会受到内部函数的影响。

    2、闭包的意义:

    返回的函数对象。不仅仅是一个函数对象,在该内部函数外还包裹了一层作用域,这使得,该函数无论

        在何处调用,优先使用自己外层包裹的作用域。

      3、实例:

    相关文章

      网友评论

        本文标题:Python名称空间和闭包

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