一、命名空间

命名空间指的是保存程序中的变量名和值的地方。命名空间的本质是一个字典,用来记录变量名称和值。字典的key是变量的名称,字典的value对于的是变量的值。
例如 {‘name’:’zs’,’age’:10}

命名空间一共分为三种:局部命名空间、全局命名空间、内置命名空间
局部空间:
每个函数都有自己的命名空间,叫做局部空间,它记录了函数的变量,包括函数的参数 和局部定义的变量
全局空间:
每个模块拥有它自已的命名空间,叫做全局命名空间,它记录了模块的变量,包括函数、 类、其它导入的模块。
内置名称空间:
任何模块均可访问它,它存放着内置的函数和异常。
input,print,str,list,tuple…
函数(命名空间、作用域、全局变量和局部变量)
结果:
函数(命名空间、作用域、全局变量和局部变量)

二、作用域

作用域指的是变量在程序中的可应用范围。

作用域按照变量的定义位置可以划分为4类即LEGB:
Local(函数内部)局部作用域。
Enclosing(嵌套函数的外层函数内部)嵌套作用域(闭包)。
Global(模块全局)全局作用域。
Built-in(内建)内建作用域。(指的是builtins.py模块)

Python内层作用域访问外层作用域时的顺序:
Python搜索4个作用域[本地作用域(L)之后是上一层结构中def或者lambda的本地作用域(E),之后是全局作用域(G)最后是内置作用域(B)(即python的内置类和函数等)]
并且在第一处能够找到这个变量名的地方停下来。如果变量名在整个的搜索过程中都没有找到,Python就会报错。

注意:
在python中,模块(module),类(class)、函数(def、lambda)会产生新的作用域,其他代码块是不会产生作用域的,也就是说,类似条件判断(if……else)、循环语句(for x in data)、异常捕捉(try…catch)等的变量是可以全局使用的。
函数(命名空间、作用域、全局变量和局部变量)
函数(命名空间、作用域、全局变量和局部变量)
结果:
函数(命名空间、作用域、全局变量和局部变量)

三、全局变量和局部变量

在函数中定义的变量称为局部变量,只在函数内部生效,在程序一开始定义的变量称为全局变量,全局变量的作用域是整个程序。

全局变量是不可变数据类型,函数无法修改全局变量的值。

全局变量是可变数据类型,函数可以修改全局变量的值。
函数(命名空间、作用域、全局变量和局部变量)
结果:
函数(命名空间、作用域、全局变量和局部变量)

函数(命名空间、作用域、全局变量和局部变量)
结果:
函数(命名空间、作用域、全局变量和局部变量)

相关文章:

  • 2021-07-12
  • 2022-12-23
  • 2022-12-23
  • 2021-08-15
  • 2021-12-11
  • 2021-05-26
  • 2022-12-23
猜你喜欢
  • 2022-01-07
  • 2022-12-23
  • 2022-12-23
  • 2021-08-13
  • 2021-06-24
  • 2021-12-26
相关资源
相似解决方案