更简洁、惯用的 Python if 语句写法

50 投票
6 回答
55655 浏览
提问于 2025-04-15 13:49

我有这个

bc = 'off'

if c.page == 'blog':
    bc = 'on'

print(bc)

有没有更符合Python风格(或者更简短)的写法呢?

6 个回答

32

好吧,我不是一个Python高手,所以请你们多包容一下。不过,经过多年的编程,我写过很多聪明的代码,也读过一些比较复杂的代码,现在我更喜欢那种易读的代码。虽然我对Python不算了解,但我还是能大致明白你原来代码的意思。确实,你可以把代码写得很复杂,可能会让一些Python专家觉得厉害,但这样做有什么意义呢?

65

这段内容是:

  1. 肯定是更简短的
  2. 可以说是符合Python风格的(在Python 2.5之前,这个版本引入了有争议的 X if Z else Y 语法)
  3. 可读性有点问题。考虑到这些限制,下面是代码:

    bc = ("off","on")[c.page=="blog"]
    

编辑:根据请求,通用形式是:

   result = (on_false, on_true)[condition]

解释:condition 可以是任何能评估为布尔值的东西。然后它会被当作整数来处理,因为它用来索引元组:False == 0True == 1,这样就能从元组中选择正确的项。

103

最简单的写法应该是:

bc = 'on' if c.page=='blog' else 'off'

一般来说,这种写法可能会让人感到有点困惑,所以你应该在它的意思很清楚的时候再使用。不要把它用在复杂的布尔表达式上,因为那样看起来会很乱。

撰写回答