Skip to main content
 首页 » 编程设计

基于字符串值执行 、>、==、= 或 >= 操作的 Pythonic 方式

2025年05月04日12powertoolsteam

假设我有一个字符串 op 可以等于 <、>、==、<= 或 >=。

我想对两个值进行关联运算。有没有比下面显示的简单 if/else 方法更 pythonic 的方法来做到这一点?

def doit(op, val1, val2): 
     if op == ">": 
         return val1 > val2 
     elif op == "<": 
         return val1 < val2 
     etc.... 

请您参考如下方法:

您可以使用运算符:

import operator 
operations = {'>':'gt', '>=':'ge', '<':'lt', '==':'eq', '!=':'ne', '<=':'le'} 
def doit(op, *vals): 
  return getattr(operator, operations[op])(*vals) 

使用getattr 等同于调用operator.eq、operator.lt 等,除了函数的字符串名称被调用传递给 getattr。

编辑:一个更短的解决方案需要从 operator 导入特定函数:

from operator import gt, ge, lt, eq, ne, le 
operations = {'>':gt, '>=':ge, '<':lt, '==':eq, '!=':ne, '<=':le} 
def doit(op, *vals): 
  return operations[op](*vals)