if块的可读性

时间:2017-03-02 18:21:50

标签: python python-3.x

我在2014 -> a0 = 2014, a1 = 2 + 2, a3 = 200 + 200, a4 = 0 + 0 2012 -> a0 = 2012, a1 = 1 + 3, a3 = 100 + 200, a4 = 0 + 0 2011 -> a0 = 2011, a1 = 2, a3 = 200, a4 = 0 语句中有很长的表达式。但显然我不允许拆分我的if语句,即使我没有因为明显的python原因而用缩进来拆分块。我是一个关于python的新手,所以如果我的问题很烦人,我很抱歉。

理想情况下,我希望以这种方式安排if语句:

if

现在它只是一行而不是很多可读。

4 个答案:

答案 0 :(得分:3)

您可以在第一行使用旧式反斜杠,其他人则不需要它,因为您使用括号:

if (expression1 and expression2) or \
(
expression2 and
(
(expression3 and expression4) or
(expression3 and expression5) or
(
expression4 and (expression6 or expression7)
)
)
):
    pass

请注意,您的示例必须修复,因为缺少一个右括号。

答案 1 :(得分:1)

使用\将表达式放在多行上,您甚至可以识别它以获得更多可读性:

if (expression1 and expression2) or \
(expression2 and \
    (\
    (expression3 and expression4) or \
    (expression3 and expression5) or \
        ( \
         expression4 and (expression6 or expression7) \
         )\
         ):
    pass

答案 2 :(得分:1)

Python有几种允许多行语句的方法。在您的情况下,您可以简单地将整个if条件包装在括号中:

if ((expression1 and expression2) or
(
expression2 and
(
(expression3 and expression4) or 
(expression3 and expression5) or
(
expression4 and (expression6 or expression7)
)
)):
    pass

但是我应该注意,在单个if语句中 许多条件对我来说似乎有点像代码味道。也许考虑创建辅助函数来封装一些逻辑,或者使用多个if语句。

答案 3 :(得分:0)

你可以这样做:

t1_2=(expression1 and expression2)
t3_4=(expression3 and expression4)
t3_5=(expression3 and expression5)
t6_7=(expression6 or expression7)
if test1 or(expression2 and (t3_4 or t3_5 or(expression4 and t6_7)):
    pass