为什么python解释器会提示……注释“#”?
发布时间:2020-12-20 13:44:46 所属栏目:Python 来源:网络整理
导读:在 Python解释器中,如果我输入#作为注释,为什么它会提示……?我期待一个提示. 例如., # my comment... x = 4 x4 # my comment... fooTraceback (most recent call last): File "stdin",line 2,in moduleNameError: name 'foo' is not defined 解决方法 这是
在
Python解释器中,如果我输入#作为注释,为什么它会提示……?我期待一个>>>提示.
例如., >>> # my comment ... x = 4 >>> x 4 >>> # my comment ... foo Traceback (most recent call last): File "<stdin>",line 2,in <module> NameError: name 'foo' is not defined 解决方法
这是我对已发生事情的有根据的猜测;我还没看过Python的
REPL代码.如您所知,Python交互式shell在基于解析了前一行的内容而期望进一步输入时使用…提示符.
例如: >>> if True: ... …因为如果……:< newline>必须遵循lexical structure of Python的缩进块. 请注意,除了空格之外,您可以使用空行触发相同的奇怪行为,例如: >>> <space><enter> ... 根据Python的词法规则,在大多数情况下,只包含空格的行不应被视为传递语句或空块,但应该将其视为根本不显示.举个例子(用|来强调每行末尾没有空格): if False:| | print "Foo"| # comment| print "Bar"| | print "Baz"| 如果您运行此代码,它将只打印Baz.前两个print语句被视为同一个块的一部分,尽管事实上在它们之前,之后和中间都有非缩进的空行或仅注释行. 基本上,当Python解释器读取空行或仅包含注释的行时,它假装它根本不读取任何行.交互式解释器基本上遵循这种行为:它正在等待输入,如果它没有输入,它会要求更多输入.因此…继续输入提示. 似乎是一个完全空行的情况(在删除EOL字符之后的行==”)是特殊情况下的交互式解释器,但是这个特殊的外壳没有扩展到只包含注释的行和/或空白. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |