I&#x27;m fairly new to Python (within just a few years of my first use of it) but have already been hacking at some Py2 apps to update them to Py3 because, well, Unicode. Much (not most, but much) of the random code I&#x27;ve tried to run with Py3 works without actual code modification beyond import statements.<p>Two primary exceptions: byte&#x2F;string encoding in Py2, and <i>print</i>. So much of the Py2 syntax works without change in Py3, and while I wholeheartedly agree with &quot;print(&#x27;foo&#x27;)&quot; as the proper way to print something, &quot;print &#x27;foo&#x27;&quot; is littered all over the random Py2 scripts I&#x27;ve found in my travels.<p>I am, in fact, converted to print(), for the record. The first time (in Py2) I tried to extrapolate what I learned about (asterisk)args, I attempted to do this:<p><pre><code>  print *df.columns
</code></pre>
Whoops. Then came Py3:<p><pre><code>  print(*df.columns)
</code></pre>
Huzzah! Instantly converted.<p>(edit again: Can&#x27;t seem to get that asterisk to work without a full-on space)