title: Difference between io.open vs open in python
body: <p>In the past, there's <code>codecs</code> which got replaced by <code>io</code>. Although it seems like it's more advisable to use <code>io.open</code>, most introductory python classes still teaches <code>open</code>. </p>
  
  <p>There's a question with <a href="https://stackoverflow.com/questions/5250744/difference-between-open-and-codecs-open-in-python">Difference between open and codecs.open in Python</a> but <strong>is <code>open</code> a mere duck-type of <code>io.open</code>?</strong> </p>
  
  <p><strong>If not, why is it better to use <code>io.open</code>? And why is it easier to teach with <code>open</code>?</strong></p>
  
  <p>In this post (<a href="http://code.activestate.com/lists/python-list/681909/" rel="noreferrer">http://code.activestate.com/lists/python-list/681909/</a>), Steven DAprano says that the built in <code>open</code> is using the <code>io.open</code> in the backend. <strong>So should we all refactored our code to use <code>open</code> instead of <code>io.open</code>?</strong></p>
  
  <p><strong>Other than backward compatibility for py2.x, are there any reason to use <code>io.open</code> instead of <code>open</code> in py3.0?</strong> </p>