我有两个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
我似乎无法找到造成这种差异的原因,尽管我在Stackoverflow上遇到过很多关于&#34; TypeError:&#39; set&#39;对象不可调用&#34;问题。 我将非常感谢您理解为什么会这样,以及我是否可以采取任何措施来确保我的代码在两个安装上运行。
答案 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)
您可以在顶部菜单中重新启动内核。 内核->重启