名称未找到全局代码错误

时间:2013-10-24 14:26:58

标签: python

def choose():
  file = pickAFile()
  pic = makePicture(file)
  return pic

def negative(pic):
  for p in getPixels(pic):
    setRed(p, 255 - getRed(p))
    setGreen(p, 255 - getGreen(p))
    setBlue(p, 255 - getBlue(p))
  explore(pic)

def main():
  choose()
  negative(pic)

我收到此错误:

  

错误是:pic   全局未找到名称。   找不到本地或全局名称。在尝试以任何方式使用它之前,您需要定义函数或变量。   请查看C:\ Users \ nh_2109 \ Desktop \ s

的第15行

帮助:d

3 个答案:

答案 0 :(得分:1)

您尚未在主要方法中定义pic

def main():
   pic = choose()
   negative(pic)

可能是您想要的,因为choose()会返回Pic类的实例。

答案 1 :(得分:0)

就像错误一样,你永远不会全局定义pic。 您从选择中返回图片,但您从未将其分配给任何内容。 将代码更改为

def main():
    pic = choose()
    negative(pic)

答案 2 :(得分:0)

您的问题是变量定义中的误解。

choose()结束时,您return pic,但您没有将变量分配给任何内容。请注意,pic中的变量choose()pic中的negative()是完全不同的变量,仅在函数运行时才存在。

要解决此问题,您需要在main()内进行以下编辑:

def main():
  picture = choose() #The "return pic" in "choose()" assigns picture = pic.
  negative(picture) #You are passing "picture" into negative(), where inside the "negative()", pic = picture.

您是否理解函数参数与参数的概念?如果没有,我将添加到此并向您解释。