【问题标题】:Local variable referenced before assignment error python赋值错误python之前引用的局部变量
【发布时间】:2015-09-22 21:28:38
【问题描述】:
def outside(x=1):
  def printHam():
    x = x+1
    print x
  return printHam

myfunc = outside(7)
myfunc()

这不起作用给出错误在赋值错误python之前引用的局部变量

但是这行得通

def outside(x=1):
   def printHam():
     print x + 1
   return printHam

myfunc = outside(7)
myfunc()

【问题讨论】:

  • 在此站点上搜索数千个“赋值前引用的局部变量”问题中的任何一个。
  • 即使是一个微不足道的查询也会得到 861 个结果:stackoverflow.com/… 你有没有做过任何研究?
  • @BrenBarn 我还是不明白
  • 有人需要关闭这个副本。

标签: python


【解决方案1】:

因为您在第一种情况下分配 x,python 将假定 x 是一个局部变量(这是默认值)。在第二种情况下,您没有分配它,因此它将检查全局范围。

如果你想让这个例子工作,你必须像这样将外部 x 传递给内部函数:

def outside(x=1):
  def printHam(x=x):
    x = x+1
    print x
  return printHam

话虽如此,这似乎是一个非常人为的用例,因此对于您的实际用例可能有更好的解决方案。但是如果不知道更多关于您要做什么,我无法告诉您它是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 2019-11-03
    • 1970-01-01
    • 2021-03-13
    相关资源
    最近更新 更多