"是否使用快捷表达式而不是三元运算符符合Python风格?"

2024-04-23 09:33:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我经常在python中使用三元运算符,效果很好:-) 现在我看到,在大多数情况下,使用“or”运算符是可能的。 例如:

# Ternary operator example
class Foo:
    first = 'First'
    second = 'Second'
    def bar(self):
        return self.first if self.first else self.second


foo=Foo()
foo.bar()  # returns 'First'

foo.first = None
foo.bar()  # returns 'Second'

同样的功能可以通过使用'or'-操作符作为Short-cirquit evaluation来实现。你知道吗

# Short-cirquit evaluation
class Foo:
    first = 'First'
    second = 'Second'
    def bar(self):
        return self.first or self.second


foo=Foo()
foo.bar()  # returns 'First'

foo.first = None
foo.bar()  # returns 'Second'

现在的问题是:

简短的cirquit评估的用法是否被认为是pep-8和pythonic用法,还是不够明确? 它是否被接受为专业解决方案?你知道吗


Tags: orselfreturnfoodefbar运算符class
1条回答
网友
1楼 · 发布于 2024-04-23 09:33:42

是的,对orand使用短路是完全合理的。重要的一点是,生成的代码应该是您能够生成的可读性和可维护性最高的版本。例如,当我在get引用列表中爬行时,我将执行以下操作

return obj and obj.record and obj.record.field_I_want

当引用序列中的任何内容都不存在时,这很好地为我提供了None,但是如果一切正常,它会返回字段值。你知道吗

相关问题 更多 >