【问题标题】:Python: function defined in while loop refers to old variablePython:while循环中定义的函数引用旧变量
【发布时间】:2021-01-04 11:00:48
【问题描述】:

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

在下面的例子中,access() 总是返回值 1。为什么?以及如何让 access() 返回最新值?

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

    def access():
        return g[0]

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

对于 lambdas 似乎也是如此。我不能让 g 全球化。

【问题讨论】:

  • 在这种情况下,函数访问不需要在 while 循环中(使软件过于混乱)。
  • @DarrylG 一个外部库在我将它传递给它之后可能会调用它
  • @2080 那又怎样?它仍然不应该在循环中定义
  • @juanpa.arrivillaga 我怎样才能让它引用循环内新生成的数据?
  • 即使你在循环之外定义它也会这样做

标签: python function variable-binding


【解决方案1】:

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

只需将其移到while 循环之外

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多