Зачем использовать contextlib.suppress
для исключения исключения вместо try
/except
с помощью pass
?
Нет никакой разницы в количестве символов между этими двумя методами (если что-либо, suppress
имеет больше символов), и хотя код часто подсчитывается в LOC вместо символов, suppress
также кажется намного медленнее чем try
/except
в обоих случаях, когда возникает ошибка, а когда нет:
Python 3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:27:37) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> from timeit import timeit
>>> # With an error
>>> timeit("""with suppress(ValueError):
x = int('a')""", setup="from contextlib import suppress")
1.9571568971892543
>>> timeit("""try:
x = int('a')
except ValueError:
pass""")
1.0758466499161656
>>> # With no error
>>> timeit("""with suppress(ValueError):
x = int(3)""", setup="from contextlib import suppress")
0.7513525708063895
>>> timeit("""try:
x = int(3)
except ValueError:
pass""")
0.10141028937128027
>>>