NameError:全局名称' unique'没有定义

时间:2015-02-28 19:51:19

标签: python

我从以下函数调用该函数是唯一的,并收到上述错误消息。

isWordGuessed(secretWord, lettersGuessed)
     55     '''
     56     letters = 0
---> 57     a = unique(secretWord)
     58     for char in a:
     59         if char in lettersGuessed:

NameError: global name 'unique' is not defined 

当我在Python中调用unique时,它运行正常。 EG

secretWord
Out[85]: 'revenging'

unique(secretWord)
Out[86]: 
array(['e', 'g', 'i', 'n', 'r', 'v'], 
      dtype='|S1')

为什么在功能中无法识别? (如果这是一个新手错误,请道歉。)

2 个答案:

答案 0 :(得分:4)

unique 内置;这是numpy.unique

{0}在您的IPython控制台中工作的唯一原因是您已经完成的事情 - 例如在pylab模式下运行IPython - 已将所有unique导入范围,这是一个坏主意。

numpy

这样做会取代In [1]: unique(list("abcb")) --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-1-83e4d9fe063f> in <module>() ----> 1 unique(list("abcb")) NameError: name 'unique' is not defined In [2]: from numpy import * # don't do this In [3]: unique(list("abcb")) Out[3]: array(['a', 'b', 'c'], dtype='|S1') all以及许多其他功能,这些功能的版本与标准版本的工作方式相同,甚至可能会产生相反的结果,所以应该不惜一切代价避免。

答案 1 :(得分:0)

如果你想让内置函数获得唯一的字母,你应该使用set,你的代码中没有任何内容表明需要一个numpy数组:

In [3]: secretWord  = 'revenging'

In [4]: set(secretWord)
Out[4]: {'e', 'g', 'i', 'n', 'r', 'v'}