在python中,如果我们要检查字典中是否存在一个元素,try
可以像这样使用,
try:
mydict["condition"]
except:
raise Exception("not exist")
此外,更优雅的方式是防御性编程。
if "condition" in mydict:
mydict["condition"]
else:
raise Exception("not exist")
并且,我认为try exception
会导致软件中断,因此性能可能会很差。
但是,使用以下测试代码,似乎try except
可以提高性能。
import time
# count the executive time
def count_time(func):
def wrap(*args):
start = time.time()
func(*args)
end = time.time()
print "func:%s time:(%0.3f ms)" % (func.func_name, (end-start) * 1000)
return wrap
@count_time
def exists_use_coarse_try(maxval):
dict_list = {"something":"...."}
try:
for item in range(0, maxval):
dict_list["something"]
except:
pass
@count_time
def not_use_try_fair(maxval):
dict_list = {"something":"...."}
for item in range(0, maxval):
if "do_something" in dict_list :
dict_list["something"]
else:
raise Exception("I know it exists!")
def run(maxval):
print "maxval:%s" % maxval
exists_use_coarse_try(maxval)
not_use_try_fair(maxval)
if __name__ == "__main__":
run(10000000)
结果是
maxval:10000000
func:exists_use_coarse_try time:(901.000 ms)
func:not_use_try_fair time:(1121.000 ms)
我的问题是:try except
是否可以提高Python的性能?