python--compile、exec、eval函数使用

发布时间 2023-08-04 12:06:04作者: 随风飘-挨刀刀

compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)

参数说明:
source:字符串或AST对象,表示需要进行编译的python代码
filename:指定需要编译的代码文件,如果不是文件读取代码则传递一些可辨认的值.
mode:用于标识必须当做那类代表来编译; (如果source是由一系列代码序列组成,则指定mode='exec’;如果source由单个表达式组成, 则指定mode='eval’;如果source是由一个单独的交互式语句组成,则指定modo='single’)
flags:变量作用域,局部命名空间,如果被提供,可以是任何映射对象
flags和dont_inherit:是用来控制编译源码时的标志

# 一段代码块
s1 = """
for i in range(8):
    if i % 2 == 0:
        print(i)
"""
# 一句命令
s2 = '2+10'
# 执行交互式命令
s3 = 'input("请输入用户名: ")'

code_exec = compile(s1, '<string>', 'exec')  # 执行一段代码块
code_eval = compile(s2, '<string>', 'eval')  # 执行一句代码
code_single = compile(s3, '<string>', 'single')  # 执行交互式命令

print('code_exec: ', exec(code_exec))
print('code_eval: ', eval(code_eval))
print('exec_code_single: ', exec(code_single))
print('eval_code_single: ', eval(code_single))

结果: