Python:将 'one-line if' s 替换为三元 if,好主意与否

标签 python python-3.x

在我目前维护的代码中,我经常看到这样的“单行 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/

相关文章:

python - 如何在Python中修复 "TypeError: The added layer must be an instance of class Layer."

java - Python 通过继承和接口(interface)实现多态

python - 如何防止 boost::python::extract<float> 接受 int

python - 如何重命名 Python 3 中表示为字符串的文件名的一部分

python - 如何在循环中的值之间打印空格?

python - 如何使用 Pandas 包装整列的文本?

python - SWIG - 映射 C++ 右移和左移运算符

python - matplotlib:如何控制所有绘图的自定义网格线型?

python - 如何从保存的模型(SSD MobileNet)创建 tflite 文件

python - 检索 NAT 类型和外部 IP 地址