" TypeError:' set'对象不可调用"

时间:2015-07-03 08:51:27

标签: python macos amazon-web-services ipython typeerror

我有两个iPython笔记本安装。一个在AWS Micro Instance上,第二个在我的Macbook上使用Anaconda(OS X Yosemite)。 我在处理以下代码的方式上遇到了不同:

my_list = [1, 2, 3, 0, 5, 10, 11, 1, 5]
your_list = [1, 2, 3, 0, 12, 13]
my_set = set(my_list)
your_set = set(your_list)
print my_set
print len(my_set)
print len(my_list)

在iPython-AWS上,我的输出是:

set([0, 1, 2, 3, 5, 10, 11])
7
9

在iPython-Macbook上,我的输出是:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-29-cd060f1b0bde> in <module>()
      1 my_list = [1, 2, 3, 0, 5, 10, 11, 1, 5]
      2 your_list = [1, 2, 3, 0, 12, 13]
----> 3 my_set = set(my_list)
      4 your_set = set(your_list)
      5 print my_set

TypeError: 'set' object is not callable

此外,如果相关,这些是安装细节: 1. AWS Micro Instance上的iPython:http://i.stack.imgur.com/qYrq8.png

  1. Macbook上的iPython Notebook - http://i.stack.imgur.com/Q6Id5.png
  2. 我似乎无法找到造成这种差异的原因,尽管我在Stackoverflow上遇到过很多关于&#34; TypeError:&#39; set&#39;对象不可调用&#34;问题。 我将非常感谢您理解为什么会这样,以及我是否可以采取任何措施来确保我的代码在两个安装上运行。

3 个答案:

答案 0 :(得分:13)

此错误表示您可能已将变量名称定义为set的集合,如果这样做,则会覆盖built-in函数set

此问题发生的示例 -

>>> set = set([1,2,3,4,5])
>>> my_set = set([2,3,4,5,6])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'set' object is not callable

答案 1 :(得分:1)

仅删除您已分配的任何预定义变量,可能是有意或无意的,该错误将消失。 由于发生这种情况,我在打印语句和类似 // Set ReadMsg = true while using UdpClient // Set ReagMsg = false before Dispose or Close no Exception Error private static bool ReadMsg; private static void ReceiveCallback(IAsyncResult ar) { UdpClient u = (UdpClient)((UdpState)(ar.AsyncState)).u; IPEndPoint e = (IPEndPoint)((UdpState)(ar.AsyncState)).e; try { if ( ReadMsg ) { Byte[] receiveBytes = u.EndReceive(ar, ref e); string sddpMessage = Encoding.ASCII.GetString(receiveBytes); } } catch (Exception ex) { Debug.WriteLine($"{ex.Message}"); } } 的括号之间错误地插入了placed = sign。 清除打印变量后就可以了。

答案 2 :(得分:0)

您可以在顶部菜单中重新启动内核。 内核->重启