title: Why use contextlib.suppress as opposed to try/except with pass?
body: <p>Why would one use <a href="https://docs.python.org/3/library/contextlib.html#contextlib.suppress"><code>contextlib.suppress</code></a> to suppress an exception, instead of <code>try</code>/<code>except</code> with a <code>pass</code>?</p>
  
  <p>There is no difference in the amount of characters between these two methods (if anything, <code>suppress</code> has more characters), and even though code is often counted in LOC instead of characters, <code>suppress</code> also seems to be much slower than <code>try</code>/<code>except</code> in both cases, when an error is raised and when it's not:</p>
  
  <pre><code>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.
  &gt;&gt;&gt; from timeit import timeit
  &gt;&gt;&gt; # With an error
  &gt;&gt;&gt; timeit("""with suppress(ValueError):
      x = int('a')""", setup="from contextlib import suppress")
  1.9571568971892543
  &gt;&gt;&gt; timeit("""try:
      x = int('a')
  except ValueError:
      pass""")
  1.0758466499161656
  &gt;&gt;&gt; # With no error
  &gt;&gt;&gt; timeit("""with suppress(ValueError):
      x = int(3)""", setup="from contextlib import suppress")
  0.7513525708063895
  &gt;&gt;&gt; timeit("""try:
      x = int(3)
  except ValueError:
      pass""")
  0.10141028937128027
  &gt;&gt;&gt; 
  </code></pre>