计算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

  1. Clone this repository and ^{tt22}$ into it
  2. Install dev dependencies with [pipenv](https://github.com/pypa/pipenv) ^{tt23}$
  3. Create a branch, like ^{tt24}$
  4. Git commit changes
  5. Pull request

许可证

这个软件是由麻省理工学院授权的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用javax从GetHTTP方法检索参数。ws。rs.*和玻璃鱼?   java是否可以在一个EJB3bean中同时使用@WebService、@Stateless和@Singleton?   java为什么我的变量不能接收值(接口)   即使PlayerView已暂停,java Exoplayer也会播放音频   java节点不能通过noe4j中的标签查找   在安卓中通过java动态添加Spinner   java为什么我不能使用Apache CLI解析选项   springjavajar文件读取图像文件   Android定时器的Java   使用TinyDB时出现java NullPointerException   java有什么方法可以获取HTTP get、POST、PUT、DELETE的常量?   使用摘要身份验证将java Maven Cargo插件部署到tomcat   数组二进制计算器赋值(Java)   内存泄漏Java,堆大小没有减少