只有 if 语句,没有 else 语句在 1 行

Only if statement and no else statement on 1 line

问题:

我知道可以将 if 语句放在一行上,但是有没有办法做到这一点,使 PEP8 不会将其重新格式化为两行?我知道你可以把它放在两行上,但这并没有回答我关于把它放在一行上的可能性的问题。

尝试次数:

if date > p1_max_date: p1_max_date = date

以上代码有效,除了 PEP8 将其重新格式化为:

if date > p1_max_date:
            p1_max_date = date

我知道我可以在保存时关闭自动格式化功能,但是有没有办法在一行中实现相同的功能(只有在 if 条件为真时才执行语句而无需else 语句)而不关闭保存时重新格式化 PEP8 功能?

我在想一些类似的事情:

p1_max_date = date if date > p1_max_date

但这给了我一个语法错误:

File "<string>", line 1
    p1_max_date = date if date > p1_max_date
                                           ^
SyntaxError: invalid syntax

我也尝试过使用三元运算符,但以下尝试均无效:

p1_max_date = date if date > p1_max_date else pass
# this doesn't work and gives me a syntax error
p1_max_date = date if date > p1_max_date else None
# this doesn't work because I don't want to change the value of the variable if the condition is false
p1_max_date = date if date > p1_max_date else p1_max_date

应该这样做。 根据 datep1_max_date 的数据类型,您也可以使用

p1_max_date = max(p1_max_date, date)

,这可能是更容易阅读的解决方案。

此任务的另一种 one-line 方法:

p1_max_date = date > p1_max_date and date or p1_max_date

and and or支持惰性求值,可用于return值,here可以在 python 中阅读有关逻辑运算符和表达式的更多信息。 这是一种可读性较差的方法,通常不受欢迎,但这是一个很好的技巧。