在我目前正在维护的代码中,我经常会看到一行“如果'构造如下:
if self.verbose >= 1:
print("Starting...")
我想将其替换为:
print("Starting...") if self.verbose >= 1 else None
甚至:
self.verbose >= 1 and print("Starting...")
在性能和/或可维护性方面,这是一个好主意还是一个坏主意?
编辑:虽然允许,但我不想将其变成完全单行,例如,if self.verbose >=1: print("Starting...")
答案 0 :(得分:3)
两种情况的表现没有区别,但第一种情况更具可读性!
有关详细信息,请参阅有关条件表达式的PEP 308。
答案 1 :(得分:3)
我不确定你为什么要这样做。我认为你提出的所有替代方案都不太可读。 (但这当然是主观的)
一般情况下删除病情怎么样?这至少会消除if
的重复。
def print_verbose(self, *args, **kwargs):
if self.verbose>=1:
print(*args, **kwargs)
...
self.print_verbose("Starting...")
甚至迁移到使用已经支持不同日志记录级别的logging
模块。使用已配置的日志记录,这将变为:(前提是通过logger
为此模块创建logging.getLogger()
)
logger.verbose("Starting")
关于性能......如果你写if
的方式实际上对这个程序的性能很重要,那么Python本身可能不是一个好主意;)(差异将以纳秒为单位测量,很可能不会没关系)