def fun(x):
for k in range(10):
found = False
if x < 12 and other(k):
dostuff()
found = True
if x == 4 and other2(k):
dostuff()
found = True
if not found:
dootherstuff(k)
我有这个代码。我的问题是,由于x不变,是否可以事先评估这些if语句?
该代码应执行以下操作:
def fun(x):
if x == 4:
for k in range(10):
if other2(k):
dostuff()
else:
dootherstuff(k)
if x < 12:
for k in range(10):
if other(k):
dostuff()
else:
dootherstuff(k)
或
def fun(x):
for k in range(10):
if x == 4 and other2(k) or x < 10 and other(k):
dostuff()
else:
dootherstuff(k)
但是由于这两个都是非常干燥且丑陋的,所以我想知道是否有更好的选择。在我的真实代码中,我有更多的语句,但是我只需要对X的某些值进行循环中的特定检查,并且我不想每次迭代都检查X,因为它不会改变。
答案 0 :(得分:0)
认为这应该相同:
def fun(x):
for k in range(10);
if x < 12 and other(k):
dostuff()
elif x == 4 and other2(k):
dostuff()
else:
dootherstuff(k)
答案 1 :(得分:0)
您可以执行以下操作
def fun(x):
cond1 = x < 12
cond2 = x == 4
for k in range(10):
found = False
if cond1 and other(k):
dostuff()
found = True
if cond2 and other2(k):
dostuff()
found = True
if not found:
dootherstuff(k)