Python:if定义中的语句会导致名称错误

时间:2014-04-17 12:48:50

标签: python if-statement nameerror

我在更大的代码中遇到一个小问题......我可以在下面的示例中重现它

def graph(form): 
    if form == single:
        print 1
    if form == multi:
        print 2

当我输入

graph(single)

我得到了

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-146-c730e3c6bbf1> in <module>()
----> 1 graph(single)

<ipython-input-143-cf1ff0a5e57e> in graph(form)
      5     if form == single:
      6         print 1
----> 7     if form == multi:
      8         print 2
      9 

NameError: global name 'multi' is not defined

1

我的错误在哪里?

2 个答案:

答案 0 :(得分:3)

singlemulti没有任何价值。它们未在您的函数中的任何位置或全局定义。

您需要在功能发挥作用之前定义它们的含义。

如果它们只是单词,则需要用引号"single"而不是single包装它们。

答案 1 :(得分:1)

错误告诉您问题所在:

NameError: global name 'multi' is not defined

上面的某个地方,您错误输入或忘记定义multi变量。如果这些是在方法之外定义的全局变量,则应使用global statement在方法的顶部指明。有一个很好的全球使用示例here