Python中的作用域

时间:2019-09-25
本文章向大家介绍Python中的作用域,主要包括Python中的作用域使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

LEGB

L:local,局部作用域,即函数中定义的变量

E:enclosing,嵌套的父集函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的

G:global,全局变量,就是模块级别定义的变量

B:built-in,系统固定模块里面的变量,比如int,bytearray等。搜索变量的优先级顺序依次是:作用域局部>外层作用域>当前模块的全局>Python内置作用域,也就是LEGB

x=int(2.9)   #int bulit-in
g_count = 0    #global
def outer():
    o_count = 1  #enclosing
    def inner():
        i_count = 2  #local
        print(i_count)
        print(o_count)
 
    inner()
 
outer()

错误的经典案例分析

count=10
def outer():
    print(count)
    count=5 #不能修改全局的作用域的值

 下面的这个可以

count=10
def outer():
    count = 9 #在内部定义一个变量是局部变量
 
outer()

或者修改成下面

count=10
def outer():
    global count
    print(count)
    count=5 
    print(count)

局部变量修改的关键字

def outer1():
    count = 10
    def inner():
        nonlocal count
        count=20
        print(count)
    inner()
    print(count)
outer1()

原文地址:https://www.cnblogs.com/softtester/p/11583308.html