python中是否有int/str/float等效符可用于';==,!=,>;=等

python中是否有int/str/float等效符可用于';==,!=,>;=等,python,if-statement,Python,If Statement,我正在尝试编写一个动态python脚本,将if语句存储在数据库中。 例: 是否有一种解决方案可以格式化op,以便python能够读取它?使用模块获取二进制操作的相应函数: import operator conversions = { '==': operator.eq, '+': operator.add ... } 你可以这样评价他们: op = conversions['=='] if op(stat, stat1): ... 另一种不推荐的方法是使

我正在尝试编写一个动态python脚本,将if语句存储在数据库中。 例:

是否有一种解决方案可以格式化op,以便python能够读取它?

使用模块获取二进制操作的相应函数:

import operator

conversions = {
    '==': operator.eq,
    '+': operator.add
    ...
}
你可以这样评价他们:

op = conversions['==']
if op(stat, stat1):
    ...

另一种不推荐的方法是使用基础特殊方法名称来执行操作:

conversions = {
    '==': '__eq__',
    '!=': '__ne__',
    '>=': '__ge__',
    ...
}
现在,在评估代码时:

op = conversions['==']
if getattr(stat, op)(stat1):
    ...

要创建完整的转换列表,请使用网站获取二进制操作的方法名称-算术操作(如加法)和逻辑操作(如大于)

我在这里调用一个
x/y问题。你到底想解决什么问题?您正试图跨越源代码和数据之间的界限,构建一个自我修改的程序。这很危险,很难调试,并且会玷污你的业力。请查看
操作符
库。@修剪用户和后端数据之间的许多接口,包括用户编写“伪查询”,用户必须解析、验证并执行这些查询。如果您曾在搜索引擎中使用过布尔查询,则后端会有一个解析器。@Scott,当然,但如果该解析器的作者神智正常,则不会通过在宿主语言中生成要直接解释的代码来实现,而是生成要计算的AST。构建一个解释器并不是天生的邪恶,但是连接字符串来生成代码(基本上)是邪恶的。@Scott我很清楚这一点;我已经写了几个解析器。在大多数情况下,像这样带有演示文稿的帖子是为了解决一个问题,而这个问题最好用另一种方式来处理。如果OP真的需要一个解析器,那么实际问题需要一个更深入的解决方案。不,请不要使用像这样的dunder方法。为什么不
操作员。不管什么
op = conversions['==']
if getattr(stat, op)(stat1):
    ...