python - 意想不到的异常

标签 python exception

我一有机会就教基本的 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

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

为什么会出现这个错误?什么样的求值顺序会导致 Python 认为我想调用一个 list

最佳答案

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

关于python - 意想不到的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57140802/

相关文章:

python - 如何使用 Google App Engine ndb.KeyProperty

python - 从数据框创建字典,其中多列的元组作为键,另一列作为值

multithreading - 单元测试时如何处理其他线程中引发的异常?

java - 将消息添加到现有的 NullPointerException

python - 将实体嵌入映射回原始分类值

python - 如何在 if 语句之后将命名参数传递给函数?

python - 使用 Hadoop 的 Blender 静止图像渲染

exception - 避免将 try/catch 添加到代码库中每个方法 block 的策略?

java - 为什么你可以抛出一个未发生的异常但不捕获它

nhibernate - IndexOutOfRangeException 深入 NHibernate