python - 是否有 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 读取?
解决方案
使用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):
...
要创建完整的转换列表,请使用此网站获取二进制运算的方法名称 - 算术运算(如加法)和逻辑运算(如大于)。
推荐阅读
- html - 内联Content-Security-Policy 是否会影响服务器的策略?
- sql-server - SQL Server:在 CASE 和 ELSE 部分中调用相同的函数
- javascript - 脚本返回“TypeError:无法从 NULL 读取属性长度”,即使它不是
- c++ - 如何在 C++ 应用程序中正确包含标题并使用 STL 向量?
- c# - C# 显示窗口不工作(#32770 (Dialog))
- php - 提交失败后如何保留表单输入
- java - 尝试连接 RMI 服务器时出现 NotBoundException
- powershell - 如何轻松地在 cmdlet 之间传递所有参数?
- php - 如果所选字段包含某些字符串或域名,则阻止表单提交
- node.js - 如何在只有发布它的用户可以访问的 NodeJs 中制作待办事项列表?