MaxLunar MaxLunar - 2 months ago 18
Python Question

Checking if string contains valid Python code

I am writing some sort of simple web-interpreter for vk.com . I look for messages, check if they are valid Python code, and then I want to execute that code, and return any

stdout
to code sender. I have implemented anything but code checker.

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()
always return
True
regardless of what comes in. Im really confused...

Answer

Keep in mind, the difference between a runtime error and a parser error is significant in your case and example. The statement:

test

is valid code. Even though this statement will throw a NameError when the Python VM executes the code, the parser will not know that it actually wasn't assigned a value before the statement is parsed, so that's why it's a runtime error, and not a syntax error.