Python中本地变量和全局变量的规则是什么?
在Python中,变量的作用域有两种,一种是本地变量,另一种是全局变量。本地变量指的是在函数内部定义的变量,全局变量指的是在函数外部定义的变量。两种变量有着不同的作用范围和使用规则。
阅读更多:Python 教程
本地变量
在函数内部定义的变量称为本地变量,它们的作用域仅限于函数内部。在函数内部对于本地变量的引用是可行的,但是在函数外部引用本地变量会抛出NameError异常。下面是一个示例:
def test():
x = 100
print(x)
test()
print(x)
输出结果为:
100
NameError: name 'x' is not defined
全局变量
在函数外部定义的变量称为全局变量,它们的作用范围可以是整个程序或多个函数。在函数内部对于全局变量的引用需要加上global关键字,否则会被视为本地变量。下面是一个示例:
x = 100
def test():
global x
x = 200
print(x)
test()
print(x)
输出结果为:
200
200
在上面的示例中,global x语句告诉Python,x是全局变量,而不是本地变量。因此,在执行x = 200时会将全局变量x的值改为200。
变量作用域的查找顺序
当我们在函数中引用一个变量时,Python会按照以下顺序查找该变量:
- 尝试在本地变量中查找该变量;
- 如果在本地变量中没有找到,就尝试在函数外部的局部变量中查找该变量;
- 如果还没有找到,就尝试在全局变量中查找该变量;
- 如果还没有找到,就抛出NameError异常。
下面是一个示例:
x = 100
def test():
x = 200
print(x)
test()
print(x)
输出结果为:
200
100
在上面的示例中,函数test()中的x是一个本地变量,它的值是200。而在函数外部的x是全局变量,它的值是100。因此,在执行print(x)时,会输出全局变量x的值,即100。
结论
在Python中,变量的作用域有两种,一种是本地变量,另一种是全局变量。它们的作用范围不同,使用规则也有所不同。在函数内部对于本地变量的引用是可行的,但是在函数外部引用本地变量会抛出NameError异常;在函数内部对于全局变量的引用需要加上global关键字,否则会被视为本地变量。当引用一个变量时,Python会按照本地变量、局部变量、全局变量的顺序查找该变量。
极客笔记