浅谈Python函数之作用域
在 Python 中,作用域关系到变量的可见范围。Python 中分为全局作用域和局部作用域。
全局作用域
全局作用域中的变量可以在函数内部引用。如果有重名的变量,则优先使用局部变量。
示例代码:
a = 1 # 全局变量
def foo():
print("函数内部 a 的值为:", a) # 可以引用全局变量 a
b = 2 # 局部变量
print("函数内部 b 的值为:", b) # 可以引用局部变量 b
foo()
print("函数外部 a 的值为:", a) # 可以引用全局变量 a
输出结果:
函数内部 a 的值为: 1
函数内部 b 的值为: 2
函数外部 a 的值为: 1
局部作用域
局部作用域中的变量只能在定义它的函数内部引用。
示例代码:
def foo():
x = 1 # 局部变量
def bar():
nonlocal x # 使用 nonlocal 声明 x
x += 1
bar()
print("函数内部 x 的值为:", x) # 可以引用局部变量 x
foo()
输出结果:
函数内部 x 的值为: 2
在函数 bar 中,使用 nonlocal 声明变量 x,就可以在 bar 函数中对 x 进行修改。
内置作用域
在 Python 中,还有一个内置作用域,可以直接使用内置函数和变量,比如 print() 和 input() 等。
示例代码:
def foo():
print("内置变量 True 的值为:", True) # 可以引用内置变量 True
foo()
输出结果:
内置变量 True 的值为: True
Python 的作用域规则可以用LEGB规则表示:从L->E->G->B分别表示不同的作用域,即局部作用域(Local)、嵌套作用域(Enclosing)、全局作用域(Global)和内置作用域(Built-in)。
总结
Python 的作用域规则分为全局作用域和局部作用域,可以使用 nonlocal 关键字来在局部作用域中引用外层作用域中的变量。内置作用域可以直接使用内置变量和函数。对 Python 作用域规则的理解有助于写出更加清晰和准确的代码。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈python函数之作用域(python3.5) - Python技术站