我无法如何使这项工作:
default=lambda obj: return None if isinstance(obj, DataLoader)
default
变量是json.dumps()
的参数,因此如果被序列化的dict包含TypeError
对象,则代码可以不升DataLoader
。 / p>
答案 0 :(得分:6)
您需要else
子句,然后删除return
:
lambda obj: None if isinstance(obj, DataLoader) else obj
lambda
expression必须返回某些内容,但它们不需要return
,其中一个表达式始终返回值。< / p>
conditional expression同样必须生成某事;当isinstance(obj, DataLoader)
为假时,表达式应该产生什么?
答案 1 :(得分:4)
首先,当您创建lambda
expression时,您必须省略return
关键字。
此外,三元运算符( aka conditional expressions )的工作原理如下:
a if b else c
如果a
为b
, ...将返回True
,否则将返回c
(如果b
为False
)。
您错过了else
部分。
最后,您的代码应如下所示:
default = lambda obj: None if isinstance(obj, DataLoader) else obj
当obj
不是DataLoader
的实例时,选择您希望lambda函数返回的内容,我在这里为您挑选obj
,但它已经完成了给你。
最后,我在=
周围添加了一些空格,因为这是你应该做的事情(如PEP8中所述)。