IF语句格式化Python

时间:2018-05-02 12:57:08

标签: python if-statement

我正在尝试创建一个多层IF语句,我不确定下面的语句是否格式正确。

我在阅读下面嵌套的IF语句时遇到问题,是否可以更有效地编写此代码?

谢谢,

 if (a>= gT) and (cLow> rBT):
            print("Alpha 1")


            if (a_high> c_high) and (c_low < d_low):
                if (a> abc) and (a< c_low):
                    print("Final Count")

                    if (min(a, b) > min(c, d)) and \
                            (max(e,f) > max(g, h)): print("All Memory Deleted")

2 个答案:

答案 0 :(得分:5)

除了使缩进更均匀,删除多余的括号,结合第二次和第三次if测试之外,你无法做很多事情来改进它。

if a >= gT and cLow > rBT:
    print("Alpha 1")
    if a_high > c_high and c_low < d_low and a > abc and a < c_low:
        print("Final Count")
        if min(a, b) > min(c, d) and max(e,f) > max(g, h):
            print("All Memory Deleted")

组合第二次和第三次if测试是安全的原因是and运算符“短路”,即expression_1 and expression_2 expression_1 expression_2如果if (min(a, b) > min(c, d) and max(e,f) > max(g, h)): 评估,则为false。有关此主题的更多信息,请参阅示例(在Python 2中),请参阅我的答案here

顺便说一句,如果可以的话,最好避免反斜杠延续:它太脆弱了。反斜杠后的任何空格都会破坏延续。相反,如果它还没有使用某种形式的括号,你通常可以在括号中包含一个长表达式。例如,

http
.authorizeRequests()
.antMatchers("/**")
.hasRole("USER")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login.html")
.permitAll()
.and().csrf().disable()
;

有关详细信息,请参阅Python样式指南PEP-0008

答案 1 :(得分:1)

虽然可能有几个原因不这样做,但是如果你的嵌套if语句的可读性对你来说很重要,那么就会想到执行时间,这样的事情也适用。

str=str.replace(/\/$/, "")
str=str.replace(\/,",")