计算dict/json对象中的表达式
dicteval的Python项目详细描述
库来计算dict/json对象中的表达式。
要求
- Python3.6+
基本用法
模块dicteval将计算基本类型,不做任何修改,但它将 计算包含以=(相等)开头的键的dict(或json对象) 作为表达式的符号:
>>> from dicteval import dicteval >>> dicteval(3) 3 >>> dicteval([3, 5]) [3, 5] >>> dicteval((5, 3)) [5, 3] >>> dicteval({"=sum": [3, 5]}) 8 >>> dicteval({"=": 5}) # = symbol alone is a 'nop' function 5
您可以为字典提供要在评估过程中使用的上下文
>>> dicteval({"=": "!{var}"}, context={"var": 1.0}) 1.0
还可以用@{}包装字符串内容,以强制使用Python eval() 提供上下文:
>>> dicteval({"=sum": [3, "@{var + 2}"]}, context={"var": 3}) 8
警告
此功能将在以后的版本中删除(或更改) 安全原因。
功能
您可以在表达式中使用以下内置函数:
函数=any
如果序列的任何元素为true,则返回True。
>>> dicteval({"=any": [1, 2, 3]}) True >>> dicteval({"=any": [0, 0]}) False
函数=eq
如果序列的所有元素都等于:
>>> dicteval({"=eq": [1, 1, 1, 1]}) True
函数=if
计算条件并返回第一个值(如果为true),否则返回第二个值。 如果没有提供假值,则假定为None。
>>> dicteval({"=if": [{"=": "@{var > 5}"}, "yes", "no"]}, context={"var": 6}) 'yes' >>> dicteval({"=if": [{"=": "@{var > 5}"}, "yes", "no"]}, context={"var": 4}) 'no' >>> dicteval({"=if": [{"=": "@{var > 5}"}, "yes"]}, context={"var": 4})
函数=neq
如果序列元素不同,则返回True:
>>> dicteval({"=neq": [1, 1, 1, 5]}) True
函数=(或nop)
返回作为参数传递的相同值:
>>> dicteval({"=": [1, 2, 3, 4]}) [1, 2, 3, 4] >>> dicteval({"=nop": "spam"}) 'spam'
函数=not
返回参数的布尔倒数:
>>> dicteval({"=not": False}) True >>> dicteval({"=not": True}) False >>> dicteval({"=not": None}) True >>> dicteval({"=not": "XYZ"}) False
函数=sum
返回一个带参数和的数字:
>>> dicteval({"=sum": [3, 5]}) 8
函数=mul
返回一个带参数乘积的数字:
>>> dicteval({"=mul": [3, 5]}) 15
函数=all
如果iterable的所有元素都为true(或iterable为空),则返回true
>>> dicteval({"=all": (True, False)}) False >>> dicteval({"=all": (True, True)}) True
函数=divmod
返回包含除法后的商和余数的元组:
>>> dicteval({"=divmod": [8,3]}) (2, 2) >>> dicteval({"=divmod": [7.5,2.5]}) (3.0, 0.0)
函数=zip
返回由多个iterable的元素构造的聚合元组的列表。
>>> dicteval({"=zip": [[1, 2, 3], [4, 5], [6, 7, 8, 9]]}) [(1, 4, 6), (2, 5, 7)]
待办事项
- 向内置语言添加更多函数
贡献
贡献给dicteval:
- Clone this repository and ^{tt22}$ into it
- Install dev dependencies with [pipenv](https://github.com/pypa/pipenv) ^{tt23}$
- Create a branch, like ^{tt24}$
- Git commit changes
- Pull request
许可证
这个软件是由麻省理工学院授权的。