【问题标题】:overwrite variable from parent's function scope从父函数范围覆盖变量
【发布时间】:2021-04-14 17:19:11
【问题描述】:

我正在尝试编写一个递归函数。当我写这样的代码时。它工作正常。

def older_func():
    variable = 1
    def func():
       print(variable)

       return func

    return func
older_func()(5)

但是如果我在打印后尝试重新分配我的变量,我会得到一个错误

def older_func():
    variable = 1
    def func(n):
       print(variable)
       variable = n
       return func

    return func
older_func()(5)

赋值前引用的局部变量。在打印步骤上。请帮助我了解行为和克服此问题的方法。

UnboundLocalError: 赋值前引用的局部变量“变量”

【问题讨论】:

标签: python


【解决方案1】:

没有错误代码只是返回一个函数对象,因为你没有调用实际的函数你只是返回它return func

但是当你称它为return func(n) 它将引发 UnboundLocalError: local variable 'variable' referenced before assignment 所以你需要使用nonlocal关键字

def older_func():
   variable = 1

   def func(n):
      nonlocal variable
      print(variable)
      variable = n
      return func

   return func(5)

【讨论】:

  • 我没有添加调用这两个函数。但我当然是认真的。 old_func()(5) - 我调用这段代码的方式。目前,您的帖子无法以任何方式回答我的问题
猜你喜欢
  • 1970-01-01
  • 2021-02-13
  • 2012-01-13
  • 1970-01-01
  • 1970-01-01
  • 2022-08-16
  • 2011-11-20
  • 1970-01-01
  • 2013-09-17
相关资源
最近更新 更多