官方Python教程(第9.10章)中的错误示例?

时间:2017-06-04 06:04:06

标签: python python-3.x

我将以下示例从 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的福音的明显错误。

2 个答案:

答案 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)

只要您没有覆盖zipsum,代码就可以正常运行:

>>> 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