两个函数的作用是一样的。在
def function1(self):
a = self.get_a()
b = self.get_b()
c = self.get_c()
r = None
if a:
r = a
if b:
r = b
if c:
r = c
else:
print("c not set.")
else:
print("b not set.")
else:
print("a not set.")
return r
def function2(self):
a = self.get_a()
b = self.get_b()
c = self.get_c()
r = None
if not a:
print("a not set.")
return r
r = a
if not b:
print("b not set.")
return r
r = b
if not c:
print("c not set.")
r = c
return r
function1()创建非常长的行,如果嵌套的if越多,则与PEP8的78行长度限制冲突。在
function2()可能更难阅读/理解,并且有更多的返回语句。线路长度在这里没有问题。在
哪个更像Python?在
您可以使用
and
和or
运算符的求值规则,例如:所以你会有这样的东西:
^{pr2}$我建议将I/O从逻辑代码中分解出来。在
python代码的一个原则是“扁平比嵌套好”。在此基础上,我认为
function2()
客观上更像Python。这可以在PEP-20: The Zen of Python中看到:这可以通过在Python解释器中输入
import this
来看到。在正如@Will的回答所暗示的,平淡更好。但是代码看起来并不很漂亮。一种更紧凑的代码怎么样?在
看看@Will的回答:
当然,这一点还可以进一步改善
相关问题 更多 >
编程相关推荐