Skip to main content
 首页 » 编程设计

python之使用字符串作为运算符

2025年05月04日24qq78292959

例如,假设我有一堆这样的赋值语句:

if operator == '==': 
   if a == b: 
       c += 5 
elif operator == '>': 
   if a > b: 
       c += 5 
elif operator == '<': 
   if a < b: 
       c += 5 

我给出的 if 嵌套 if 语句和赋值只是示例,但在我正在编写的程序中,它们确实很长。运算符不同的地方只有一个小的变化,所以我不想为了所有这些条件而一遍又一遍地重复相同的长代码。条件太多,代码会重复很多次。那么有没有“更快”的方法来做到这一点?我可以将字符串定义为运算符吗?或者有什么更好的方法吗?

请您参考如下方法:

怎么样:

from operator import * 
 
str_ops = {'<':lt,'>':gt,'==':eq} # etc 
op = str_ops.get(my_operator) #where my_operator was previously your 'operator' 
assert op is not None #or raise your own exception 
if op(a,b): 
    c+=5 

而且,如果你想优雅地处理 my_operator 中的伪造运算符,你可以这样做:

op = str_ops.get(my_operator, lambda x,y: None) #fallback: do-nothing operator 

这种方法的好处:

  • 一个if 语句。无论您处理多少运算符(operator)。
  • O(1) 的行为,而不是 O(n) 的分支 if/elif 语句。
  • dict 非常明确:this 字符串转到 this 运算符。
  • 不重复自己。