如果我有一串 Python 代码,我如何判断它是否有效,即,如果在 Python 提示符下输入,它会引发 SyntaxError 与否?我认为 usingcompiler.parse
会起作用,但显然该模块已在 Python 3 中删除。有没有办法在 Python 3 中也适用。显然,我不想执行代码,只需检查它的语法。
问问题
3760 次
2 回答
25
使用ast.parse
:
import ast
def is_valid_python(code):
try:
ast.parse(code)
except SyntaxError:
return False
return True
>>> is_valid_python('1 // 2')
True
>>> is_valid_python('1 /// 2')
False
于 2012-08-07T22:06:08.367 回答
4
编译器模块现在是一个内置的.
compile(source, filename, mode[, flags[, dont_inherit]])
将源代码编译为代码或 AST 对象。代码对象可以由 exec 语句执行或通过调用 eval() 进行评估。source 可以是字符串或 AST 对象。有关如何使用 AST 对象的信息,请参阅 ast 模块文档。
AST 解析器现在是一个单独的模块。
ast.parse(expr, filename='<unknown>', mode='exec')
将表达式解析为 AST 节点。相当于
compile(expr, filename, mode, ast.PyCF_ONLY_AST)
。
于 2012-08-07T22:06:55.573 回答