限制性评估器
项目描述
Leval
一个限制性表达式评估器
比ast.literal_eval()
更适合动态使用,同时保持与您传入的函数一样安全。
底层,它使用ast
模块解析表达式,然后在Python中遍历AST以评估结果。您还可以指定表达式复杂性的深度限制以及评估的时间限制。
示例用法
简单API
对于许多用例,simple_eval()
函数就足够了。您可以指定深度限制和时间限制,以及可选的变量和函数映射。
该values
映射也可以通过字符串元组作为键,这是属性访问折叠成的。
在简单API中,操作通常仅限于数字。
from leval.simple import simple_eval
assert simple_eval('1 + 2') == 3
assert simple_eval('x < -80 or x > 125 or x == 85', values={'x': 85})
assert simple_eval('abs(x) > 80', values={'x': -85}, functions={'abs': abs})
assert simple_eval('x.y.z + 8', values={('x', 'y', 'z'): 34}) == 42
高级API
底层,simple_eval
只是
- 初始化一个评估宇宙,该宇宙定义了可用的函数、变量和操作
- 创建一个评估器,使用给定的宇宙评估表达式
这两个类都设计为易于继承。在test_leval.py
文件中有示例。
项目详情
下载文件
下载您平台对应的文件。如果您不确定该选择哪个,请了解更多关于 安装包 的信息。
源代码分发
leval-1.3.0.tar.gz (9.6 kB 查看哈希值)
构建分发
leval-1.3.0-py3-none-any.whl (14.5 kB 查看哈希值)