Python lambda返回None而不是空字符串

Vir*_*liu 8 python lambda

我有以下lambda函数:

f = lambda x: x == None and '' or x
Run Code Online (Sandbox Code Playgroud)

如果它接收None作为参数,它应该返回一个空字符串,如果它不是None,则返回参数.

例如:

>>> f(4)
4
>>> f(None)
>>>
Run Code Online (Sandbox Code Playgroud)

如果我调用f(None)而不是获得一个空字符串,我会得到None.我打印了函数返回的类型,我得到了NoneType.我在期待弦乐.

type('')返回字符串,所以我想知道为什么当我将None作为参数传递时,lambda不会返回空字符串.

我对lambdas很新,所以我可能误解了一些关于它们如何工作的事情.

z33*_*33m 20

使用if else结构

f = lambda x:'' if x is None else x
Run Code Online (Sandbox Code Playgroud)


Yar*_*lav 8

在你的情况下''的问题被认为是布尔假.bool('')== False.您可以使用

f =lambda x:x if x is not None else ''
Run Code Online (Sandbox Code Playgroud)