Python 中有4中作用域:
❏ Local(局部作用域)
❏ Enclosing(外层作用域)
❏ Global(全局作用域)
❏ Built-in(内建作用域)
当访问一个变量时,Python 会按照以下顺序查找:
Local -> Enclosing -> Global -> Built-in
作用域范围图示:

下面这个介绍。
定义:函数的内部就是局部作用域,局部作用域中的变量,只在该函数内部可见。
特定:
举例:
def test():
x = 10
print(x) # 在局部作用域,可以访问
test()
# print(x) # 不可访问,报错:NameError: name 'x' is not defined
定义:如果函数中有定义了函数,那么外层函数的作用域,就是内层函数的 Enclosing 作用域。
特定:
nonlocal。举例:
def outer():
x = 10 # outer 的局部变量,是 inner 的 Enclosing 变量
def inner():
# 下面两行代码,修改外层函数作用域变量
nonlocal x
x = 12
print('内层函数输出:', x) # 内层函数读取外层变量
inner()
print('外层函数输出:', x)
outer()
定义:.py文件就是全局作用域,全局作用域中的变量,在当前.py文件的任何位置都可以访问。
特定:
.py文件中可见。global关键字修改全局变量。举例:
a = 100
b = 200
def test2():
# 以下两行代码,修改全局变量
global b
b = 300
print(a, b)
test2()
print(a, b) # 在文件任何位置都可以访问
定义:Python 预先定义好的东西,会放在内建作用域中,所有.py文件都可以直接使用。
特定:
.py文件都能直接使用其中的名称,例如:print、len、range、sum、max等。举例:
print('hello')
len([1, 2, 3])
本文的内容需要多多理解。
🔥BuildAdmin是一个永久免费开源,无需授权即可商业使用,且使用了流行技术栈快速创建商业级后台管理系统。