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)

 

posted on 2023-11-10 21:32  生活费  阅读(102)  评论(0编辑  收藏  举报

导航