为什么python解释器会提示。。。请发表评论#&引用;?

为什么python解释器会提示。。。请发表评论#&引用;?,python,comments,interpreter,read-eval-print-loop,Python,Comments,Interpreter,Read Eval Print Loop,在Python解释器中,如果我输入一个#作为注释,为什么它会提示…?我希望出现>>提示 e、 g >#我的评论 ... x=4 >>>x 4. >>>#我的评论 ... 福 回溯(最近一次呼叫最后一次): 文件“”,第2行,在 NameError:未定义名称“foo” 这是一个提示,就像当您键入def foo():并按enter键时,它会显示一个省略号(…),并在一些提示下自动为您创建选项卡。这只是说它接受了你在多行线上做的事情。这是我对正在发生的事情的有根据的猜测;我实际上还没有看过Pytho

在Python解释器中,如果我输入一个
#
作为注释,为什么它会提示
?我希望出现
>>
提示

e、 g

>#我的评论
... x=4
>>>x
4.
>>>#我的评论
... 福
回溯(最近一次呼叫最后一次):
文件“”,第2行,在
NameError:未定义名称“foo”

这是一个提示,就像当您键入
def foo():
并按enter键时,它会显示一个省略号(…),并在一些提示下自动为您创建选项卡。这只是说它接受了你在多行线上做的事情。

这是我对正在发生的事情的有根据的猜测;我实际上还没有看过Python的代码。如您所知,Python interactive shell在解析了前一行的内容后需要进一步输入时,会使用
..
提示符

例如:

>>> if True:
...    
。。。因为
如果…:后面必须有一个缩进块,符合以下要求:

请注意,您可以使用除空格外为空的行触发相同的稍微奇怪的行为,例如:

>>> <space><enter>
...
如果运行此代码,它将仅打印
Baz
。前两个<代码>打印< /COD>语句被视为同一块<强>的一部分,尽管在它们之前、之后和在它们的中间>/P>中有非缩进的空的或注释的行。 基本上,当Python解释器读取一行空白或仅包含注释时,它会假装根本没有读取任何行。交互式解释器基本上遵循这种行为:它在等待输入,如果没有输入,它会要求更多的输入。因此,
继续输入提示


完全空白的行(
行==''
在切掉EOL字符后)的大小写似乎是特殊的,但这种特殊的大小写并没有扩展到只包含注释和/或空白的行。

它需要一个语句。它跳过注释并提示输入语句的其余部分(因此
)。很像如果命令包含一个行继续符或不平衡的括号。我认为这里要问的更好的问题是,为什么您要尝试使用命令行输入注释?如果这是一个问题,为什么不将您的注释放在后面,
foo=4 35; foobar
我认为一个好问题是为什么解释器需要一个语句。很可能,这只是REPL如何解析输入的产物,不值得优化这种特殊情况。你可以将问题转过来问,“为什么当我按下按钮时,解释器没有提示
?”完全空白的行是交互式解释器的特殊情况,虽然只有空格/注释的行不是“在多行上做某事”——但在“#”的情况下,它是一行“运算符”。
>>> <space><enter>
...
if False:|
|
    print "Foo"|
# comment|
    print "Bar"|
|
print "Baz"|