码迷,mamicode.com
首页 > 编程语言 > 详细

Python--作用域

时间:2018-11-29 01:30:02      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:全局变量   div   嵌套   def   global   顺序   调用   bsp   int   

作用域

作用范围:
    全局范围(内置名称空间与全局名称空间属于该范围):全局有效
    局部范围(局部名称空间属于该范围):局部有效

  注:作用域关系是在函数定义阶段就已经固定的,与函数的调用位置无关

 


 

查看作用域

LEGB 代表名字查找顺序: locals -> enclosing function -> globals -> __builtins__
locals 是函数内的名字空间,包括局部变量和形参
enclosing 外部嵌套函数的名字空间(闭包中常见)
globals 全局变量,函数定义所在模块的名字空间
builtins 内置模块的名字空间

  


 

global & nonlocal

x = 1
def foo():
    global x
    x = 3
    print(x)
foo()
print(x)
 
#  global关键字用于在局部修改全局的变量
 
 
x = 1
def f1():
    x =0
    print(x)        # 0
    def f2():
        x = 2
        print(x)        # 2
        def f3():
            nonlocal x
            x = 666
            print(x)        # 666
        f3()
        print(x)    # 666
    f2()
f1()
print(x)    # 1
 
#  nonlocal关键字用于修改上一层的变量,但是不会修改全局的,如果局部没有找到就会报错

  

 

Python--作用域

标签:全局变量   div   嵌套   def   global   顺序   调用   bsp   int   

原文地址:https://www.cnblogs.com/Mr-chenshuai/p/9954081.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!