Python中自由变量和全局变量的区别与联系
已于 2025年02月24日 21:37 修改
访问次数:14
自由变量与全局变量的区别
- 自由变量: 在某个函数或代码块中使用,但没有在该函数或代码块内部定义。 它的值来自于外部作用域,可能是全局作用域,也可能是其他函数的作用域。 自由变量不一定是全局变量,可以是局部作用域中的变量。
- 全局变量: 定义在模块的最外层,不属于任何函数或代码块。 在整个模块内都可以访问,无论是在函数内部还是外部。 全局变量在模块范围内是可见的。
举例说明:
- 自由变量来自于外部作用域:
def outer_function():
x = 10 # x 是 outer_function 的局部变量
def inner_function():
print(x) # x 是自由变量,来自 outer_function 的作用域
inner_function()
outer_function()在上面的例子中,inner_function() 中使用了 x,而 x 在 inner_function() 中并没有定义,它来自 outer_function() 的作用域。因此,x 对 inner_function() 来说是自由变量。
2. 全局变量作为自由变量
x = 10 # x 是全局变量
def my_function():
print(x) # x 是自由变量,来自全局作用域
my_function()3. 如果自由变量事全局变量,那么直接修改时候会报错
def main():
x = x + 1
print(x)
if __name__ == '__main__':
x = 5
main()4. 通过 global 关键字修改全局变量:
x = 10 # 全局变量
def my_function():
global x # 明确声明 x 是全局变量
x = x + 5 # 修改全局变量
print(x)
my_function() # 输出 15
总结:
- 自由变量是指在函数中使用但没有在该函数内部定义的变量,它的值来自外部作用域(可能是全局作用域或其他函数的作用域)。
- 全局变量是定义在模块最外层的变量,在整个模块中都可访问。
评论(0)