如何将 lambda 返回的字符串与其他字符串连接起来?

How to concatenate a string returned by a lambda with other strings?

我正在尝试使用 lambda 检查对象 (self) 的属性 problematic_object 是否为 None。如果是,它应该 return 一个 ""(空字符串),如果不是,则 str(self.problematic_object)。我试过 3 种方法:

1:

def __str__(self):
    return "string1" + str(self.object) + "\n" + "string2" + self.another_object + "\n" + "string3" + exec(lambda self: str(self.problematic_object) if self.problematic_object!=None else "")

2:

def __str__(self):
    return "string1" + str(self.object) + "\n" + "string2" + self.another_object + "\n" + "string3" + (lambda self: str(self.problematic_object) if self.problematic_object!=None else "")

3:

def __str__(self):
    return "string1" + str(self.object) + "\n" + "string2" + self.another_object + "\n" + "string3" + lambda self: str(self.problematic_object) if self.problematic_object!=None else ""

我在所有情况下都遇到此错误:

SyntaxError: invalid syntax

我知道这可以使用普通的 if-else 来完成,但是有什么方法可以使用 lambda 来完成吗?这是我第一次使用 lambda 和这种 if-else。我犯了什么错误? lambda可以这样用吗?

如果 self.problematic_object 可能是 None,在这种情况下,您只需要一个空字符串,只需使用 f-strings 将其添加到整个字符串即可。不需要任何布尔逻辑:

def __str__(self):
    return f"string1{self.object}\nstring2{self.another_object}\nstring3{self.problematic_object}"

如果 self.problematic_objectNone 则不会在字符串末尾添加任何内容。如果它不是 None 那么它的值将被添加。