首页 > 解决方案 > 是否有 int/str/float 等价物在 python 中用于'==、!=、>= 等符号?

问题描述

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

op='=='
stat1='4'
stat=int(stat1)
if stat==4: # Works
if stat + op + stat: # Does not Work

是否有格式化 op 的解决方案,以便它可以被 python 读取?

标签: pythonif-statement

解决方案


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

import operator

conversions = {
    '==': operator.eq,
    '+': operator.add
    ...
}

你会像这样评估它们:

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

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

conversions = {
    '==': '__eq__',
    '!=': '__ne__',
    '>=': '__ge__',
    ...
}

现在在评估您的代码时:

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

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


推荐阅读