所以,我这里没有一个完整的答案,但这与在Python 3.9中首次亮相的新PEG解析器有关,因为当我使用它时(它是Python 3.9上的默认解析器),我会得到同样的错误:
Python 3.9.1 (default, Dec 11 2020, 06:28:49)
[Clang 10.0.0 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> hdr_filenames = [
"20210311_105300_HDR.jpg",
"20210311_105306_HDR.jpg",
"20210311_105310_HDR.jpg",
"20210311_105314_HDR.jpg",
"20210311_105341_HDR.jpg", # order of last two have reversed exposures
"20210311_105323_HDR.jpg"
]
File "<stdin>", line 1
]
^
SyntaxError: multiple statements found while compiling a single statement
但是你可以通过传递一个命令行选项来恢复到旧的LL(1)解析器,然后就不会出错了:
但是您可以通过传递命令行选项来恢复旧的LL(1)解析器,然后,哇!无错误:
(py39) juanarrivillaga@50-254-139-253-static % python -X oldparser
Python 3.9.1 (default, Dec 11 2020, 06:28:49)
[Clang 10.0.0 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> hdr_filenames = [
"20210311_105300_HDR.jpg",
"20210311_105306_HDR.jpg",
"20210311_105310_HDR.jpg",
"20210311_105314_HDR.jpg",
"20210311_105341_HDR.jpg", # order of last two have reversed exposures
"20210311_105323_HDR.jpg"
]
>>> exit()
对于那些感兴趣的人,有关新解析器的相关PEP 617。
编辑
因此,在Python 3.9.2上(我相信目前是最新版本),这似乎不再是一个问题。因此,也许可以升级?
Python 3.9.2 (default, Mar 3 2021, 11:58:52)
[Clang 10.0.0 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> hdr_filenames = [
... "20210311_105300_HDR.jpg",
... "20210311_105306_HDR.jpg",
... "20210311_105310_HDR.jpg",
... "20210311_105314_HDR.jpg",
... "20210311_105341_HDR.jpg", # order of last two have reversed exposures
... "20210311_105323_HDR.jpg"
... ]
>>>
[
之后,问题就消失了。另一件奇怪的事情是...如果我将示例分成两个部分进行复制/粘贴,首先只粘贴第一行,然后再粘贴表达式的其余部分,问题也会消失。我和 @juanpa.arrivillaga 的设置类似,所以奇怪的是我能够重现这个问题而他们却不能。 - CryptoFool