为何Python不支持在句点上隐式换行?

3 投票
6 回答
640 浏览
提问于 2025-04-16 07:51

有没有什么原因导致Python不允许在句号前后进行隐式换行?也就是说,

data.where(lambda d: e.name == 'Obama').
    count()


data.where(lambda d: e.name == 'Obama')
    .count()

这样做会和Python的某些特性冲突吗?随着方法链API的兴起,这似乎是个不错的功能。

6 个回答

1

不太确定句号后的情况,但在你的例子中,句号前的换行符让第一行可以单独成为一个有效的语句。这样一来,Python就得查看第二行,才能判断第一行是否真的是一个语句。

在定义语言语法时,其中一个目标就是让它能够被解析,而不需要像这样去提前查看,避免产生歧义。

如果在交互式解释器中,每一行后都得按两次回车,才能让Python知道你已经完成了语句,并且不会在后面加上.foo(),那就会很烦人。

3

在Python中,如果你在括号内,可以把一行代码分成多行写,这样更容易阅读。所以你可以试试这样:

(data.where(lambda d: e.name == 'Obama').
    count())

我知道这并没有直接回答你的问题(“为什么?”),但希望这对你有帮助。

6

这两种情况都可能产生有效且完整的结构,所以继续处理它们会让解析器变得更加复杂。

print 3.
  1415926

print 'Hello, world'
  .lower()

撰写回答