python---tornado框架模板引擎本质compile和exec(eval)

时间:2024-04-15 09:13:57
namespace = {'name':'sda','age':[12,46,24],}

code = """def say(): return 'name %s, age %d'%(name,age[0])"""

func=compile(code,"<string>","exec");

exec(func,namespace)
#将func函数放到字典中,与字典中的其他数据共用一个作用域
#namespace = {'name':'sda','age':[12,46,24],func} ret = namespace['say']()
#执行函数 print(ret)

其中tornado框架模板引擎本质也是类似。使用字符串分割,将原来代码,改写成python格式的字符串,然后通过上面类似方案进行代码执行返回