首页  >  文章  >  后端开发  >  为什么函数调用不更新全局变量?

为什么函数调用不更新全局变量?

Barbara Streisand
Barbara Streisand原创
2024-10-19 12:00:29502浏览

Why Does Function Call Not Update Global Variable?

函数调用不会更新全局变量

这个问题探讨了一个编程挑战,其中最初分配为 False 的全局变量是'在函数内引用时,t 会被更新。尽管函数改变了全局变量的值,但主程序的循环继续执行,导致无限循环。理解这个问题需要深入研究命名空间和变量作用域的概念。

命名空间和变量作用域

在编程中,每个函数和模块都会创建自己的命名空间。命名空间是在该范围内已知且可访问的名称(变量、函数等)的集合。当在函数内为变量赋值时,即使存在同名的全局变量,也会在函数的命名空间中创建一个新变量。

使用全局变量

在这种情况下,当函数内引用名为“done”的全局变量时,会在函数的命名空间中创建一个具有相同名称的新局部变量。这种局部“完成”与全局“完成”不同。更改本地“done”对全局变量没有影响。

解决方案

要克服这个问题,必须使用 global 关键字来显式引用全局变量的功能。通过使用全局done,该函数告诉解释器访问全局“done”变量,而不是创建一个新的本地变量。

修改代码

修复问题,该函数可以修改如下:

<code class="python">def function():
    global done
    for loop:
        code
        if not comply:
            done = True</code>

说明

使用全局done在函数内使用的变量和全局变量之间建立了联系。当函数修改done的值时,它会更新最初引用的同一全局变量。这确保了当函数将 did 设置为 True 时,主程序的 while 循环将按预期终止。

以上是为什么函数调用不更新全局变量?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn