为什么在Python之前不能在for循环之前使用分号?

Nei*_*ker 15 python

我可以使用分号在Python中加入行,例如

a=5; b=10
Run Code Online (Sandbox Code Playgroud)

但为什么我不能这样做

x=['a','b']; for i,j in enumerate(x): print(i,":", j)
Run Code Online (Sandbox Code Playgroud)

Bre*_*arn 17

因为Python语法不允许它.查看文档:

stmt_list     ::=  simple_stmt (";" simple_stmt)* [";"]
Run Code Online (Sandbox Code Playgroud)

分号只能用于分隔简单语句(不是复合语句for).而且,实际上,即使这样,也几乎没有理由使用它们.只需使用单独的行.Python不是为了方便将大量代码插入一行而设计的.


ars*_*jii 13

简短(但有效)的答案只是"因为语言语法没有被定义为允许它".至于为什么会出现这种情况,除非你问谁想出那部分语法,否则很难确定,但我认为这是由于可读性,这是Python 1的目标之一.

你为什么要写一些像这样模糊不清的东西?只需将其分成多行:

x = ['a','b']
for i,j in enumerate(x):
    print(i, ":", j)
Run Code Online (Sandbox Code Playgroud)

我认为这种变体更加清晰.


1来自import this:可读性计数.

  • 一种用例是在命令行中使用:`python -c 'import something; 因为……'` (4认同)

Dan*_*ski 5

因为 Python 的创建者 Guido van Rossum 和其他开发人员实际上并不喜欢“分号和大括号”的代码格式样式。

要简要了解他们对这些事情的感受,请尝试:

from __future__ import braces
Run Code Online (Sandbox Code Playgroud)

Python 中的语句应该由空行分隔,Python 中的复合语句应该由缩进界定。

;和单行复合语句(例如)的存在for i in x: print i意味着只有非常有限的让步......并且您不能将它们组合起来。