Python 全局找不到名称代码错误

Python 全局找不到名称代码错误,python,Python,我得到这个错误: 错误是:pic 全局找不到名称。 找不到本地或全局名称。在尝试以任何方式使用函数或变量之前,需要先定义它。 请检查C:\Users\nh\u 2109\Desktop\s的第15行 帮助?:D您尚未在主方法中定义pic def choose(): file = pickAFile() pic = makePicture(file) return pic def negative(pic): for p in getPixels(pic): setRed

我得到这个错误:

错误是:pic 全局找不到名称。 找不到本地或全局名称。在尝试以任何方式使用函数或变量之前,需要先定义它。 请检查C:\Users\nh\u 2109\Desktop\s的第15行


帮助?:D

您尚未在主方法中定义
pic

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)

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

就像错误所说的,您从不全局定义Pic。 您从choose返回pic,但从未将其分配给任何对象。 将代码更改为

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

您的问题是对变量定义的误解

choose()
的末尾,您
返回pic
,但不将变量分配给任何对象。注意,
choose()
中的变量
pic
negative()
中的
pic
是完全不同的变量,只有在函数运行时才存在

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


你了解函数参数和参数的概念吗?如果没有,我将对此进行补充并向您解释。

我查看了您的代码并列出了一个修复程序,但我认为您可能会误解您的要求。如果你在我文章的最后仍然感到困惑,请告诉我,我会用更好的解释来修改。谢谢,你的解释太棒了:)你用什么运行代码来产生这样的错误消息?
def main():
    pic = choose()
    negative(pic)
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.