Python 名称错误:全局名称';独特的';没有定义

Python 名称错误:全局名称';独特的';没有定义,python,Python,我从下面的函数调用unique函数,并得到上面的错误消息 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

我从下面的函数调用unique函数,并得到上面的错误消息

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时,它工作得很好。乙二醇

secretWord
Out[85]: 'revenging'

unique(secretWord)
Out[86]: 
array(['e', 'g', 'i', 'n', 'r', 'v'], 
      dtype='|S1')
为什么在功能中不被识别?(如果这是新手错误,请道歉)。

unique
未内置;那太好了

unique
在IPython控制台中起作用的唯一原因是您所做的某些事情(例如在pylab模式下运行IPython)将所有
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')
[1]中的
:唯一(列表(“abcb”))
---------------------------------------------------------------------------
NameError回溯(最近一次呼叫上次)
在()
---->1唯一(列表(“abcb”))
名称错误:未定义名称“唯一”
在[2]中:来自numpy import*#不要这样做
在[3]中:唯一(列表(“abcb”))
出[3]:
数组(['a','b','c'],
数据类型=“| S1”)

这样做会用numpy版本取代
所有
任何
以及许多其他函数,这些函数的工作方式与标准函数不同,有时甚至会产生相反的结果,因此应不惜一切代价避免使用。

如果您希望内置函数获得唯一的字母,则应使用,代码中没有任何内容表明需要numpy数组:

In [3]: secretWord  = 'revenging'

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

什么是唯一的?错误的意思和它所说的完全一样。您尚未定义唯一函数。唯一函数是内置的。我没有给它下定义。正如我所说的,在第二个示例中直接将其输入python很好。它在Orders中列出了字符串的唯一字符PS感谢您如此快速的响应我正在从Canopy运行编辑器。我唯一导入的模块是“math”,但numpy似乎是预装的。我已尝试将函数中的unique更改为numpy.unique,但它现在显示“NameError:未定义全局名称'numpy'。我尝试显式导入numpy,但结果是一样的。@user326827:如果您确实想使用它,那么在文件开头添加
import numpy
,并使用
numpy.unique
应该可以。但是,除非您需要一个排序的唯一项,否则首先没有理由使用它(坦率地说,无论如何都有非numpy的方法可以使用。)@user326827,不用担心,集合的最大优势是查找是
0(1)
,而不是线性列表等。。因此,使用集合作为检查成员资格的工具通常是一个好主意。享受6.001x