python执行字段串代码
很多时候,我们会让用户自己写代码,然后保持,需要的时候执行,这个时候,保持的代码是字符串,怎么执行呢,这里简单介绍一下
1. eval
如果是单行语句或者表达式可以使用eval执行,如:
eval("2+4+5")
2. exec
如果是多行的代码,可以使用exec执行(可以使用变量,也可以产生变量),如:
lenth=10 code = 'for i in range(1,lenth): print(i)' exec(code)
3. complie配和types的FunctionType 执行字符串方法
from types import FunctionType func_str = "def main(age):\n print(name,age)" func_code = compile(func_str, '', 'exec') func = FunctionType(func_code.co_consts[0], globals()) name='test' func(23)
4. quickjs 执行js的字符串方法
from quickjs import Function code = 'function main (context){\n return {"res": context["name"]+context["age"]}\n}' name = 'main' f = Function(name, code) f.set_memory_limit(256 * 1024) f.set_time_limit(5) res = f({"name":"test","age":23}) print(res)
参考:
python-字符串作为代码执行(exec、eval、locals、compile)