python入门之作用域

作用域的分类

1、全局作用域

全局可以调用的名字就存在于全局作用域

内置名称空间 + 全局名称空间

2、局部作用域

局部可以调用的名字就存放于局部作用域

局部名称空间

3、 global

声明全局变量

4、 nonlocal

在局部名称空间声明局部变量,在局部修改上层函数的变量

只有可变类型可以在局部修改外部变量的值

x = 1          
 
def index():   
    global x   
    x = 2      
 
 
index()        
print(x)       
# 在局部修改外部函数的变量
x = 1111                        
def index():                    
    x = 1                       
    def func2():                
        x = 2                   
        def func():             
            nonlocal x          
            x = 3               
        func()                  
        print(x)                
    func2()                     
    print(x)                    
 
index()                         
print(x)                        
# 只有可变类型可以在局部修改外部变量的值
l1 = []
def index(a):
    l1.append(a)
 
 
index(1)
# 局部变量的修改无法影响上层,上上层
def index():            
    x = 1               
 
    def index2():       
        nonlocal x      
        x = 2           
 
    index2()            
    print(x)            
 
 
index()                 
原文地址:https://www.cnblogs.com/cnhyk/p/11838449.html