Tôi đã tự hỏi tại sao thử-trừ là chậm hơn so với nếu trong chương trình dưới đây.Python nếu so với try-except
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()
Kết quả tôi nhận được thật thú vị.
Testing Try
2.91111302376
Testing If
0.30621099472
Bất kỳ ai cũng có thể giải thích lý do vì sao quá chậm?
Nó không thực sự áp dụng ở đây, nhưng đôi khi nhìn vào 'dis.dis (funcname)' là tiện dụng để tìm ra chính xác cách thức hoạt động bên trong – Daenyth