python odoo中safe_eval的用途

Ann*_*rai 2 python openerp

Python odoo中safe_eval的目的是什么?并使用safe_eval.我已经检查了几个自定义模块,他们有安全的评估功能.

Pra*_*a V 8

safe_eval:

  • 包含旨在提供更有限的替代方法以评估简单和/或不可信代码的方法的模块.

  • 此模块中的方法通常用作eval()的替代方法,用于解析OpenERP域字符串,条件和表达式,主要基于locals condition/math builtins.

用法:

safe_eval(expression[, globals[, locals[, mode[, nocopy]]]]) -> result
Run Code Online (Sandbox Code Playgroud)

系统限制的Python表达式评估

计算包含表达式的字符串,该表达式主要使用Python常量,算术表达式和直接在上下文中提供的对象.

这可用于例如评估来自不可信来源的OpenERP域表达式.

  • throws TypeError:如果提供的表达式是代码对象
  • 抛出SyntaxError:如果提供的表达式不是有效的Python
  • throws NameError:如果提供的表达式访问了禁止的名称
  • 抛出ValueError:如果提供的表达式使用禁止字节码