【问题标题】:"TypeError: 'set' object is not callable"“TypeError:'set' 对象不可调用”
【发布时间】:2015-09-21 01:02:11
【问题描述】:

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

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 微实例上的 iPython:http://i.stack.imgur.com/qYrq8.png

  1. Macbook 上的 iPython 笔记本 - http://i.stack.imgur.com/Q6Id5.png

我似乎找不到造成这种差异的原因,尽管我确实在 Stackoverflow 上遇到了许多关于“TypeError:'set' object is not callable”问题的线程。 如果能帮助我理解为什么会这样,我将不胜感激,如果我能做些什么来确保我的代码在两个安装上都能运行。

【问题讨论】:

  • 这两种情况下的python版本是什么?
  • 如果你 print set 在代码的开头你看到了什么?
  • 2.7.6 在 AWS 版本上。 2.7.10 在本地版本上。
  • 如果您在重新启动 Python 时立即输入显示的代码,就会发生这种情况?你可以用屏幕截图来证明这一点吗?
  • @PadraicCunningham 我按照建议尝试了print set。它已经在 AWS 上运行了大约 2 分钟。在本地,结果如下:--------------------------------------------------------------------------- TypeError Traceback (most recent call last) &lt;ipython-input-30-51947dbe83cc&gt; in &lt;module&gt;() 1 my_list = [1, 2, 3, 0, 5, 10, 11, 1, 5] 2 your_list = [1, 2, 3, 0, 12, 13] ----&gt; 3 my_set = set(my_list) 4 your_set = set(your_list) 5 print set TypeError: 'set' object is not callable

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


【解决方案1】:

此错误表明您可能已经定义了一个变量名为 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

【讨论】:

  • 我不知道你为什么被否决。我敢打赌,发生了一些变化。
  • 谢谢 - 这可能是问题所在,我会仔细查看代码并找到相关行。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    只需删除您分配的任何预定义变量,可能是有意或无意的,错误就会消失。 我在打印语句和括号(如print=(A|B);)之间错误地使用了placed = sign,因为它正在发生。 清除打印变量后就好了。

    【讨论】:

      【解决方案4】:

      写:

      my_set = set
      
      my_set.update(my_list)
      

      不要使用括号。

      【讨论】:

      • 我以为您的意思是 my_setmy_list,这是 OP 示例代码中使用的内容。
      猜你喜欢
      • 2021-01-12
      • 2017-08-14
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 2018-12-25
      • 2021-04-15
      • 2011-10-01
      • 2020-11-10
      相关资源
      最近更新 更多