关于Python的局部变量和全局变量

img

img


为什么黄色的图,最后ls没有改变,但是另外一个图,x的值从3变成了5

Python 中的变量有作用域的概念,即在不同的程序块中定义的变量具有不同的作用范围。根据作用范围的不同,变量可以分为局部变量和全局变量。

局部变量是在函数内部定义的变量,在函数外部无法访问该变量。它的作用范围仅限于定义的函数内部。通常情况下,每个函数都有自己的局部变量,与其他函数的变量完全隔离,互不影响。当函数执行完毕后,其局部变量也会被销毁。

全局变量是在模块文件、类定义或者函数之外定义的变量。全局变量可以在当前模块的任何一个函数中被访问和修改。全局变量的作用范围覆盖整个模块文件,因此多个函数中可以共享同一个全局变量,对全局变量的修改将影响到其他函数。

需要注意的是,在函数内部如果你想修改全局变量的值,必须在函数内部先用关键字 global 声明该变量,否则 Python 将会在函数体内新建一个局部变量,而不是直接修改全局变量。例如:

x = 10  # x 是全局变量

def func():
    global x  # 声明 x 是全局变量
    x = 20   # 修改全局变量 x 的值

print(x)    # 输出 10
func()
print(x)    # 输出 20

在上面的示例中,首先定义了一个全局变量 x,然后定义了一个函数 func,在函数内部使用 global 声明了变量 x 是全局变量,并将其修改为了 20。最后再次输出变量 x,可以看到变量的值已经被修改为 20。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^