Попробуйте использовать BaseException
вместо SyntaxError
.Это будет проверять каждый тип ошибки Python, включая NameError
.Кроме того, поскольку ast.parse
никогда не вызывает никаких ошибок, вместо этого следует использовать exec
.
Так должно быть так:
def is_valid_python(code):
try:
exec(code)
except BaseException:
return False
Return True
mycode = 'pri1nt("hello world")'
is_valid_python(mycode) # false