加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

为什么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字符之后的行==”)是特殊情况下的交互式解释器,但是这个特殊的外壳没有扩展到只包含注释的行和/或空白.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读