本文介绍了Python if vs try-except的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想知道为什么 try-except 比下面程序中的 if 慢.
I was wondering why the try-except is slower than the if in the program below.
def tryway():
try:
while True:
alist.pop()
except IndexError:
pass
def ifway():
while True:
if alist == []:
break
else:
alist.pop()
if __name__=='__main__':
from timeit import Timer
alist = range(1000)
print "Testing Try"
tr = Timer("tryway()","from __main__ import tryway")
print tr.timeit()
print "Testing If"
ir = Timer("ifway()","from __main__ import ifway")
print ir.timeit()
我得到的结果很有趣.
Testing Try
2.91111302376
Testing If
0.30621099472
谁能解释一下为什么 try 这么慢?
Can anyone shed some light why the try is so much slower?
推荐答案
您只设置了一次 alist.第一次调用tryway"会清除它,然后每次连续调用什么都不做.
You're setting alist only once. The first call to "tryway" clears it, then every successive call does nothing.
def tryway():
alist = range(1000)
try:
while True:
alist.pop()
except IndexError:
pass
def ifway():
alist = range(1000)
while True:
if alist == []:
break
else:
alist.pop()
if __name__=='__main__':
from timeit import Timer
print "Testing Try"
tr = Timer("tryway()","from __main__ import tryway")
print tr.timeit(10000)
print "Testing If"
ir = Timer("ifway()","from __main__ import ifway")
print ir.timeit(10000)
>>> Testing Try
>>> 2.09539294243
>>> Testing If
>>> 2.84440898895
这篇关于Python if vs try-except的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!