七、Python之作用域LEGB

    作用域:变量起作用的范围

    Local 局部作用域:函数内部

    Enclosing 外部嵌套作用域:函数嵌套

    Global 全局作用域:模块(.py文件)内部

    Builtin 内置模块作用域:builtins.py文件

变量名的查找规则

    由内到外:L -- E -- G -- B

    在访问变量时,先查找本地变量,然后是包裹此函数的外部,再是全局变量,最后是内置变量

局部变量

    定义在函数内部的变量(形参也是局部变量)

    只能再函数内部使用

    调用函数时才被创建,函数结束后自动销毁

全局变量

    定义在函数外部,模块内部的变量

    在整个模块(py文件)范围内访问(但函数内不能将其直接赋值)

global 语句

    作用:在函数内部修改全局变量,在函数内部定义全局变量

    语法:global 变量1,变量2,。。。

    说明:在函数内部直接为全局变量赋值,视为创建局部变量;不能先声明局部变量,再用global声明为全局

nonlocal 语句

    作用:nonlocal声明了将要在一个嵌套的作用域中修改的名称

    语法:nonlocal name

    说明:nonlocal语句在执行时,nonlocal声明的名称必须已经在一个嵌套的def作用域中赋值过,否则将会得到一个错误:不能                 通过在嵌套的作用域中赋值来创建变量

               nonlocal限制作用域查找仅为嵌套的def,不会在嵌套的模块的全局作用域或所有def之外的内置作用域中查找

发布了39 篇原创文章 · 获赞 10 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/chiaotien/article/details/104274615