Python 变量做用域

Python查找一个变量时会按照“局部做用域”、“嵌套做用域”、“全局做用域”和“内置做用域”的顺序进行搜索函数

示例code

def foo():
    b = 'aaa'

    # Python中能够在函数内部再定义函数
    def bar():
        c = True
        print(a)
        print(b)
        print(c)

    bar()
    # print(c)  # NameError: name 'c' is not defined


if __name__ == '__main__':
    a = 100
    # print(b)  # NameError: name 'b' is not defined
    foo()

代码的if分支中定义了一个变量a这是一个全局变量(global variable),属于全局做用域,由于它没有定义在任何一个函数中。作用域

在上面的foo函数中咱们定义了变量b,这是一个定义在函数中的局部变量(local variable),属于局部做用域,在foo函数的外部并不能访问到它;变量

但对于foo函数内部的bar函数来讲,变量b属于嵌套做用域,在bar函数中咱们是能够访问到它的。搜索

bar函数中的变量c属于局部做用域,在bar函数以外是没法访问的co

相关文章
相关标签/搜索