赞
踩
今天看到一段代码,在一字典中有个字段为gt,gte,lt,lte,然后根据此字段进行判断,例子代码如下:
- dict_test1 = {"A":2,"B": 3, "rule":"gt"}
- dict_test2 = {"A":2,"B": 3, "rule":"gte"}
- dict_test3 = {"A":2,"B": 3, "rule":"lt"}
- # 需要对最后的rule进行判断,然后判断前面A,B谁更大,然后进行其他流程操作
- if dict_test1['rule'] == "gt":
- if A > B :
- control(1)
- else:
- control(2)
- elif dict_test1['rule'] == "gte":
- if A >= B :
- control(1)
- else:
- control(2)
- elif dict_test1['rule'] == "lte":
- if A <= B :
- control(1)
- else:
- control(1)
- elif dict_test1['rule'] == "lt":
- if A < B :
- control(1)
- else:
- control(2)
看到这样的代码,感觉太麻烦了,特别是如果第二层判断后,如果代码重复,那完全就是消耗性能,以及冗余的代码。
优化后:
- from operator import lt, gt, ge, le
-
- dict_test1 = {"A":2,"B": 3, "rule":"gt"}
- dict_test2 = {"A":2,"B": 3, "rule":"ge"}
- dict_test3 = {"A":2,"B": 3, "rule":"lt"}
- dict_test4 = {"A":2,"B": 3, "rule":"le"}
- if locals()[dict_test1["rule"]](A,B):
- print("A", dict_test1["rule"], "B")
- pass
- else:
- pass
主要优化:1 将rule中的gte,lte需要改为le(小于等于),ge(大于等于)
2 多个步骤优化成一个,自动进行判断。无需其他
注意点:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。