以下内容为原创,转载请注明出处!
需求:前端有个代码编辑器,写了一堆代码脚本,后台收到传过来的数据格式是string,我们在后台收到数据后需要执行,并且用到上下文数据变量,所以忽略掉保存文件,单独执行这个方案。具体方案如下:
采用python自带的exec方法:
add_num_str = '''
def set_data(num):
return num + 1
'''
方法一:
exec(add_num_str)
set_data(3) # 打印结果为4
方法二:
namespace = {} # 将所有变量存放在namespace里面,这样可以防止污染上下文变量
exec(add_num_str, namespace)
namespace['set_data'](3) # 打印结果为4方法二的安全性高,并且可以通过字符串格式的形式调用函数,这样可以大大提高便捷性