Python: while循环中定义的函数引用旧变量

Python: function defined in while loop refers to old variable

我有一个在 while 循环中定义的函数,该函数由我无法控制的代码调用。

在下面的示例中,access() 总是 return 的值为 1。为什么?我怎样才能使 access() return 成为最新值?

while True:
    g = [1,2,3]

    def access():
        return g[0]

    print(access())
    g[0] += 1

lambda 似乎也是如此。我无法使 g 全局化。

因为g变量总是重新初始化为[1,2,3]

只需将其移出 while 循环

g = [1,2,3]
while True:
    .....