Python lambda语法错误?

时间:2014-05-26 11:03:03

标签: python json lambda

我无法如何使这项工作

default=lambda obj: return None if isinstance(obj, DataLoader)

default变量是json.dumps()的参数,因此如果被序列化的dict包含TypeError对象,则代码可以不升DataLoader。 / p>

2 个答案:

答案 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
如果ab

...将返回True,否则将返回c(如果bFalse)。

您错过了else部分。

最后,您的代码应如下所示:

default = lambda obj: None if isinstance(obj, DataLoader) else obj

obj不是DataLoader的实例时,选择您希望lambda函数返回的内容,我在这里为您挑选obj,但它已经完成了给你。

最后,我在=周围添加了一些空格,因为这是你应该做的事情(如PEP8中所述)。