python版本2.6和3.1中奇怪的语法错误

python版本2.6和3.1中奇怪的语法错误,python,python-3.x,Python,Python 3.x,这可能不是python惊人的缺陷,但我仍然 想知道以下行为背后的基本原理:当我 跑 source=”“” 打印('helo') 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': 打印(‘耶!’ #""" 打印(编译(源代码,,'exec')) 我得到:: File "<whatever>", line 6 # ^ SyntaxError: invalid syntax 文件“”,第6行 # ^ SyntaxError:无效

这可能不是python惊人的缺陷,但我仍然 想知道以下行为背后的基本原理:当我 跑

source=”“”
打印('helo')
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
打印(‘耶!’
#"""
打印(编译(源代码,,'exec'))
我得到::

  File "<whatever>", line 6
    #
    ^
SyntaxError: invalid syntax
文件“”,第6行
#
^
SyntaxError:无效语法
我可以通过(1)删除尾部的
#
来避免此异常;(2) 如果uuu name_uuuu=='\uuuuuu main\uuuuu':\n删除或注释

打印('yeah!')
行;(3) 在最末尾添加一个换行符 来源

此外,如果我的源端没有尾随换行符,对吗 在
打印('yeah!')
的后面,源代码也将编译而不需要 错误

我也可以用Python2.6重现这种行为,所以它不是新的 到3k系列

我发现这个错误非常令人恼火,自从我 将上述源代码放在文件中,并直接执行或保存它 导入时,不会发生预期行为的错误

字符串文本之外的
#
(哈希)应始终表示 python源代码中注释(可能为空)的开头;此外, 如果子句中的子句 不会在句法层面上改变对sour的解释

是否有人可以重现上述问题,和/或对问题进行评论 现象

干杯

更新 事实证明,这确实是一个bug,正如;错误报告位于;它似乎在2.7和3.2中是固定的

解决方案
一旦被识别,这个bug就非常容易修复:因为在源文本中添加换行符时,有效的python源代码应该在语法上保持有效,在语义上保持不变,所以机械地对任何源文本都这样做。这让我想起了
分号:在汇编多文件javascript源代码时,为了高效地将Gzip传输到远程客户端,您机械地在源代码文本之间插入分号。

我能够复制它。奇怪-我也对答案感兴趣。转载于2.6.1。对我来说,这似乎也是一个bug,但这是一个相当极端的边缘案例。你可以把你的“更新”作为答案,并接受它。你可以称之为边缘案例,但它确实有能力成为一个表演的阻碍,直到剧烈的挠头和摸索让你继续你的日常工作;就目前而言,修复它是值得的。这里的问题是,它是如此模糊和难以谷歌。你找到了解决办法!这对你很好,但这个问题“被卡住”了,没有答案。也许你可以把这个解决方案作为你自己问题的答案发布出来,以后再接受它?:)
  File "<whatever>", line 6
    #
    ^
SyntaxError: invalid syntax