检查字符串是否包含有效的Python代码

时间:2016-10-04 04:48:41

标签: python

我正在为vk.com编写一些简单的网络解释器。我查找消息,检查它们是否是有效的Python代码,然后我想执行该代码,并将任何stdout返回给代码发送者。我已经实现了除代码检查之外的任何东西。

import ast

def is_valid(code): 
    try:
        ast.parse(code)
    except SyntaxError:
        print('Input isnt code.')
        return False
    print('Code is ok.')
    return True
无论发生什么事,

is_valid()总会返回True。我真的很困惑......

1 个答案:

答案 0 :(得分:1)

请记住,在您的示例和示例中,运行时错误和解析器错误之间的区别很重要。声明:

test

有效的代码。即使在Python VM执行代码时此语句将抛出NameError,解析器也不会知道在解析语句之前它实际上没有分配值,这就是为什么它和&#39} #39;运行时错误,而不是语法错误。