为什么'和','或'等没有python隐式行延续?

时间:2011-08-06 18:51:52

标签: python

为什么这在Python中不起作用?

if 1 != 1 or
   2 != 2:
   print 'Something is wrong...'

3 个答案:

答案 0 :(得分:6)

也许这可以防止语法模糊,但我觉得这种行为符合PEP 20的精神,特别是“简单比复杂更好”(等等)。换句话说,“除非你有充分的理由,为什么表达式应该跨越多行?”。如果你有充分的理由,那么就提供了解决这个问题的语法设备。

[编辑] 我做了一些阅读,并且有一些感兴趣的参考文献:

  • 语句的词汇定义表示逻辑行以newline结尾。添加隐式延续的每个案例都成为例外情况。
  • PEP 3125对于Python 3,建议删除斜杠(\)延续,但由于缺乏支持而被拒绝。
      邮件列表中的
    • Discussion提醒我们出现括号延续,因为当括号保持不平衡时,换行不会结束语句。
    • 在同一个帖子中,Guido反对这一变化,因为以下错误是伪装的:

    x = y+    # Used to be y+1, the 1 got dropped
    f(x)

我的最后一点是,斜线行为(或开放的行为)提醒人们,声明将在下一行继续。根据你的缩进,延续可能会被误认为是一个单独的陈述(我认为其他response会触及)。

答案 1 :(得分:4)

如果括号,括号或大括号打开,隐式行继续只在Python中发生。把括号括在你的条件周围,它会起作用。

答案 2 :(得分:4)

因为“明确胜过隐性”;一个未标记的行继续抛出代码的读者(特别是在具有语法上重要的空格的语言中),并且代码的读取频率比写入代码的频率高得多。