⚠️ 最后一站:真的跑一次
把编译好的那个 code 对象真的执行一次:
import ast, io, tokenize
LINE = 'print("hi")'
def toks(src):
skip = (tokenize.NEWLINE, tokenize.NL, tokenize.ENDMARKER,
tokenize.INDENT, tokenize.DEDENT)
return [t.string for t in tokenize.generate_tokens(io.StringIO(src).readline)
if t.type not in skip]
code = compile(LINE, "<s>", "exec")
exec(code, {"print": print})
全部评论