一位朋友(低级技能级别的娱乐python脚本编写者)让我查看一些代码.我注意到他有7个单独的陈述,基本上说.
if ( a and b and c):
do something
Run Code Online (Sandbox Code Playgroud)
陈述a,b,c都测试了它们的相等或缺乏设定值.当我看到它时,我发现由于测试的性质,我可以将整个逻辑块重写为2个分支,从不超过3个深度并且很少超过第一个级别(进行最罕见的测试)第一).
if a:
if b:
if c:
else:
if c:
else:
if b:
if c:
else:
if c:
Run Code Online (Sandbox Code Playgroud)
对我来说,从逻辑上讲,如果你做的更少,更简单的测试更快失败并继续前进,它似乎应该更快.我真正的问题是
1)当我说if if时,如果if为真,那么else会被完全忽略吗?
2)理论上会
如果(a和b和c)
花三倍于单独的if语句会花多少时间?
我下面有一个示例代码,需要一些帮助。该代码在开始时将'结果'变量设置为False,并且只有在满足所有'if'条件的情况下,才应将其设置为True。有更有效的方法吗?我试图避免嵌套的“ if”语句。
谢谢!
outcome = False
while True:
if a != b:
print("Error - 01")
break
if a["test_1"] != "test_value":
print("Error - 02")
break
if "test_2" not in a:
print("Error - 03")
break
if a["test_3"] == "is long data string":
print("Error - 04")
break
outcome = True
break
Run Code Online (Sandbox Code Playgroud)