lib5c.util.ast_eval module

Module for safely evaluating arithmetic expressions in strings.

http://stackoverflow.com/a/9558001

lib5c.util.ast_eval.eval_(node, variables)[source]

Inner function for safely evaluating a particular node of an abstract syntax tree. Called recursively to evaluate a string as part of eval_expr().

Parameters
  • node (ast.AST) – The node of the abstract syntax tree to evaluate.

  • variables (dict) – Dictionary of named variables to use during evaluation.

Returns

The result of evaluating the node.

Return type

numeric

lib5c.util.ast_eval.eval_expr(expr, variables=None)[source]

Safely evaluates a simple mathematical expression passed as a string.

Parameters
  • expr (str) – The expression to evaluate.

  • variables (dict, optional) – Dict mapping variable names to values. These variables can then be used as substrings of expr. Pass None to evaluate the expression without using any named variables.

Returns

The result of evaluating the expression.

Return type

numeric

Examples

>>> eval_expr('2^6')
4
>>> eval_expr('2**6')
64
>>> eval_expr('1 + 2*3**(4^5) / (6 + -7)')
-5.0