一行代码的四站产物

👁️ 2 人浏览 💬 0 人评论 ❤️ 添加收藏

print("hi") 走完四站,各站留下什么:词数、树里那次调用的类型、编译期记下的名字、常量表第一项。

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")
t = ast.parse(LINE)
print(str(len(toks(LINE))) + "/" + type(t.body[0].value).__name__
      + "/" + code.co_names[0] + "/" + str(code.co_consts[0]))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论