Dan*_*ook 1 python performance operators repeat
例如,假设我有一堆这样的赋值语句:
if operator == '==':
if a == b:
c += 5
elif operator == '>':
if a > b:
c += 5
elif operator == '<':
if a < b:
c += 5
Run Code Online (Sandbox Code Playgroud)
我给出的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
Run Code Online (Sandbox Code Playgroud)
而且,如果您想要优雅地处理伪操作员my_operator,您可以:
op = str_ops.get(my_operator, lambda x,y: None) #fallback: do-nothing operator
Run Code Online (Sandbox Code Playgroud)
这种方法的奖金:
if声明.无论您处理多少运营商.dict是非常声明的:此字符串转到此运算符.| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |