我将以下示例从 Python 3.6.1文档,第9.10章复制到Jupyter Notebook(Python版本3.6.1)中:
xvec = [10, 20, 30]
yvec = [7, 5, 3]
sum(x*y for x,y in zip(xvec, yvec)) # dot product
虽然官方文档说它会打印 260 ,但笔记本中出现以下错误:
----> 4 sum(x*y for x,y in zip(xvec, yvec))
TypeError: 'int' object is not callable
这绝对不仅仅是关于< int对象不可调用的问题',而是更多关于被认为是Python的福音的明显错误。
答案 0 :(得分:3)
如果您错误地覆盖了zip()
或/和sum()
,则会导致您当前的代码无效。您可以使用del
恢复其默认功能,如下例所示:
>>> zip = [1]
>>> zip
[1]
>>> del zip
>>> zip
<function zip>
所以,你可以尝试:
>>> del zip
>>> del sum
>>> xvec = [10, 20, 30]
>>> yvec = [7, 5, 3]
>>> sum(x*y for x,y in zip(xvec, yvec))
它会输出:
260
答案 1 :(得分:2)
只要您没有覆盖zip
或sum
,代码就可以正常运行:
>>> xvec = [10, 20, 30]
>>> yvec = [7, 5, 3]
>>> sum(x*y for x,y in zip(xvec, yvec))
260
确保您没有覆盖它们:
>>> sum = 0 # <--- overwrite
>>> sum(x*y for x,y in zip(xvec, yvec))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable