在我目前维护的代码中,我经常看到这样的“单行 if”结构:
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("开始...")
最佳答案
我不确定你为什么要那样做。我认为您提出的所有替代方案都不太可读。 (但这当然是主观的)
一般情况下如何删除条件?这至少会消除 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 本身可能不是一个好主意;)(差异将以纳秒为单位来衡量,它很可能无关紧要)
关于Python:将 'one-line if' s 替换为三元 if,好主意与否,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29819002/