compile()和注释

我注意到Compile()和代码没有奇怪的行为
包含尾随的新线:如果最后一行是内部的评论
任何块,都会丢弃语法错误,但是如果最后一行是非 -
评论Python语句,没有错误。这是一个示例(使用
2.5.1在OS X上)
.... def foo():
....打印'bar'""""
<代码对象
Trackback(最近的最新电话):
文件" ",第1行,<模块>
文件"",第4行
#评论最后一行
^
语法:语法无效
<代码对象
显然,更容易的解决方法是添加一个新线,一切都很好,所以
这不是一个表演者,但是这是一个错误吗?
- 埃德·叶(Ed Leafe)

# 回答1


你好埃德,
这肯定是一个奇怪的限制,但是编译的文档[1]做
明确指出,必须终止输入。
编译多行语句时,请使用两个警告:行
结尾必须由单个newline字符('\ n')表示,并且
输入必须由至少一个newline字符终止。
我总是在任何要编译的输入上添加一个额外的新线。我觉得
行为可能是用于检测不完整的陈述时的行为
互动解释器晦涩
循环。
[1] http://www.python.org/doc/2.5.2/lib/built/built-in-funcs.html
迈克尔·福德(Michael Foord)
在10月13日,下午1:06,Ed Leafe ... def foo():
...打印'bar'""""
<代码对象
Trackback(最近的最新电话):
文件" ",第1行,<模块>
文件"",第4行
#评论最后一行
^
语法:语法无效
<代码对象
显然,更容易的解决方法是添加一个新线,一切都很好,所以
这不是一个表演者,但是这是一个错误吗?
- 埃德·叶(Ed Leafe)

-http://www.ironpythoninaction.com/

# 回答2


Fuzzyman在2008年10月13日上午8:35写道:
理解;我发现奇怪的是,如果最后一个非新闻 -
终止语句是 *不是 *评论,没有丢弃错误。
- 埃德·叶(Ed Leafe)
# 回答3


埃德·叶(Ed Leafe)写道:
理解;我发现奇怪的是,如果最后一个
非新闻终止的陈述是 *不是 *评论,没有错误。
有点让人睡觉,然后wh。
如我所知,2.5.2和3.0c1要求评论在
单独的行以提出例外。
<代码对象
Trackback(最近的最新电话):
文件" ",第1行,<模块>
文件"",第3行
#haha http://bugs.python.org/issue1479099
缺少EOL时"编译"内置功能失败
理想情况下,文档应匹配行为。一致的拒绝将是
更好的。其他实现可能会这样做。
我还将这个问题包括在文档问题中
据我所知,对于2.5.2和3.0c1,编译的限制
仅在最后一行仅包含评论时适用。
<代码对象
Trackback(最近的最新电话):
文件" ",第1行,<模块>
文件"",第3行
#哈哈
我更喜欢更一致的行为。我打开了一个单独的文档
问题包括此问题的文档。 http://bugs.python.org/issue4118
Terry Jan Reedy
# 回答4


特里·里迪(Terry Reedy)在2008年10月13日下午7:20写道:
同样,无论如何,这都不是一场演出者。更好奇。
感谢您验证不一致。
- 埃德·叶(Ed Leafe)
# 回答5


埃德·叶(Ed Leafe)写道:
理解;我发现奇怪的是,如果最后一个
非新闻终止的陈述是 *不是 *评论,没有错误。
如果最后一行是缩进的怎么办?
问候
史蒂夫
- -
史蒂夫·霍顿+1 571 484 6266 +1 800 494 3119
Holden Web LLC http://www.holdenweb.com/
# 回答6


史蒂夫·霍顿(Steve Holden)写道:
理解;我发现奇怪的是,如果lastnon-newline终止的陈述是 *不是 *评论,则不会出错。
如果最后一行是缩进的怎么办?
未终止的上线评论提出了一个例外缩进。我
没有测试"常规"非指标线。

标签: python

添加新评论