python 作用域与命名空间,


作用域

作用域分为:

  1. 全局作用域
  2. 局部作用域

在函数内部的作用域叫做局部作用域,局部作用域中的变量叫做局部变量

非函数内部的作用域叫做全局作用域,全局作用域中的变量叫做全局变量

局部作用域可以使用全局变量,全局变量不能试用局部变量

变量的使用规则: 从内向外,找到后返回

  1. 函数作用域中命名全局变量global
def fn():
	global 变量 # 现在改变量为全局变量
# 注意:不可以在函数中先使用一个全局变量后在用该变量命名局部变量
报错:
    a = 1 
    def fn():
        print(a) # 全局变量
        a += 1 # 这个a是局部变量 
        
  1. 在函数或其他作用域中使用或修改上一层(非全局)变量nonlocal
a = 1 
def fn1():
    a = 2 
    def fn2():
        a = 3  # a = 4 
        def fn3():
            nonlocal a 
            a = 4 
报错:
    b = 1 
    def fn():
        nonlocal b            

命名空间

命名空间: python中的所有变量都被存储在命名空间内,每个作用域都有一个命名空间
		命名空间本质就是一个字典,是用来存储变量的字典
locals():获得挡前作用域的命名空间

评论关闭