Skip to main content
 首页 » 编程设计

python之为什么 python 的解析器会在这个简单的输入上抛出错误

2025年05月04日10mfrbuaa

我有以下代码-

from sys import version 
 
class ExampleClass(object): 
        def get_sys_version(self): 
                return version 
 
x = ExampleClass() 
print x.get_sys_version() 

它被这段代码解析 -

import ast 
 
source = open("input.py") 
code = source.read() 
node = ast.parse(code, mode='eval') 

并导致此错误 -

Traceback (most recent call last): 
  File "parse.py", line 5, in <module> 
    node = ast.parse(code, mode='eval') 
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py", line 37, in parse 
    return compile(source, filename, mode, PyCF_ONLY_AST) 
  File "<unknown>", line 1 
    from sys import version 

这似乎是一个解析起来非常简单的文件 - 它确实可以运行 - 为什么解析器会抛出这个错误?

请您参考如下方法:

这是因为您使用的是 mode='eval',它仅适用于单个表达式。您的代码有多个语句,因此请改用 mode='exec'。 (这是默认值)

参见 documentation for compile()用于解释 mode 参数,因为这是 ast.parse() 使用的。