美文网首页
变量与作用域

变量与作用域

作者: Joening | 来源:发表于2024-04-02 10:21 被阅读0次

    变量与作用域

    全局与局部变量

    • 在函数中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
    • 全局变量作用域是整个程序,局部变量作用域是定义该变量的函数。
    • 当全局变量与局部变量同名时,在定义局部变量的函数内,局部变量起作用;在其它地方全局变量起作用。

    名称空间namespace 顾名思义就是存放名字的地方,存什么名字呢?举例说明,若变量x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的地方
    名称空间共3种,分别如下

    locals:
    是函数内的名称空间,包括局部变量和形参
    globals:
    全局变量,函数定义所在模块的名字空间
    builtins:
    内置模块的名字空间
    作用域(scope)
    通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。
    不同变量的作用域不同就是由这个变量所在的命名空间决定的。

    作用域查找顺序LEGB
    locals -> enclosing function -> globals -> builtins
    locals 是函数内的名字空间,包括局部变量和形参
    enclosing 外部嵌套函数的名字空间
    globals 全局变量,函数定义所在模块的名字空间
    builtins 内置模块的名字空间
    如何在函数里修改全局变量?

    name = "noah luo"
    def change_name():
        global name
        name = "noah is luo gang"
        print("after change", name)
    change_name()
    print("在外面看看name改了么?", name)
    

    相关文章

      网友评论

          本文标题:变量与作用域

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