首页 > 解决方案 > 意外的异常

问题描述

当我有机会时,我正在教基本的 Python,我想展示我们如何轻松地生成每种类型的值,如下所示:

>>> l = [bool,int,float,str,list,tuple,set,dict]
>>> o = [f() for f in l]
>>> o
[False, 0, 0.0, '', [], (), set([]), {}]

然后我想我是否可以None以某种方式将一个项目添加到列表中,所以我这样做了,我得到了意想不到的异常:

>>> o = [f() for f in l, None]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'list' object is not callable

在这里,由于将列表理解与另一个值相结合,我最多期望 a SyntaxError,但由于某种原因我得到了TypeError: 'list' object is not callable

为什么我会收到此错误?什么样的评估顺序会导致 Python 认为我想调用 a list

标签: pythonexception

解决方案


在您的列表 comp 中[f() for f in l, None],它正在迭代可迭代的l, None或显式(l, None)的元组。元组中索引 0 处的项目是 l ,您将其定义为列表,因此不能将其称为f()


推荐阅读