我想写这个if语句尽可能紧凑(避免重复代码)
if length == 10 if boolean is False or length == 13 if boolean is True:
PyCharm不喜欢的部分是
if boolean is True
它要求冒号。
PyCharm不允许我运行它。如果有人有一个很好的紧凑解决方案吗?
答案 0 :(得分:3)
我想你的意思
if (not boolean and length == 10) or (boolean and length == 13):
括号不是必需的,但我认为它们有助于提高可读性。 @ jonsharpe的解决方案甚至更短,只需要评估boolean
一次,但它可能更难阅读,特别是如果你不熟悉Python的三元表达式。
从不使用is
进行相等性比较(==
的用途是什么),但绝不应将布尔类型明确地与True
进行比较或者False
无论如何。
答案 1 :(得分:2)
您可以使用conditional expression(也称为"三元" )更简洁地写出来:
if length == 13 if boolean else length == 10:
或等同于:
if length == (13 if boolean else 10):
根据文件:
表达式
x if C else y
首先评估条件 C ( not x );如果 C 为真,则计算 x 并返回其值;否则,将评估 y 并返回其值。