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

官方Python教程(第9.10章)中的错误示例?,python,python-3.x,Python,Python 3.x,我将以下示例从Python 3.6.1文档第9.10章复制到Jupyter笔记本(Python版本3.6.1): 虽然官方文件说它将打印260,但我在笔记本中发现以下错误: ----> 4 sum(x*y for x,y in zip(xvec, yvec)) TypeError: 'int' object is not callable 这肯定不仅仅是一个关于“int对象不可调用”的问题,更是一个关于被认为是Python福音的明显错误的问题 只要您没有覆盖zip或sum,代码就可以工作

我将以下示例从Python 3.6.1文档第9.10章复制到Jupyter笔记本(Python版本3.6.1):

虽然官方文件说它将打印260,但我在笔记本中发现以下错误:

----> 4 sum(x*y for x,y in zip(xvec, yvec))
TypeError: 'int' object is not callable

这肯定不仅仅是一个关于“int对象不可调用”的问题,更是一个关于被认为是Python福音的明显错误的问题

只要您没有覆盖
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
求和(x*y代表x,y在zip中(xvec,yvec)) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 TypeError:“int”对象不可调用
如果您错误地覆盖了
zip()
或/和
sum()
,这将导致当前代码无法工作。您可以使用
del
恢复其默认功能,如以下示例所示:

>>> zip = [1]
>>> zip
[1]
>>> del zip
>>> zip
<function zip>
它将输出:

260

我的作品可能在剧本中复制是的。事实上,如果我将最后一行更改为:
value=sum(x*y代表x,y在zip中(xvec,yvec))#dot product
print(value)
它在jupyter笔记本内部工作
>>> del zip
>>> del sum
>>> xvec = [10, 20, 30]
>>> yvec = [7, 5, 3]
>>> sum(x*y for x,y in zip(xvec, yvec))
260