Yesterday. But I ran into the issue last week.<p>I was reusing &quot;paramStr&quot; variable. This is a built in in the os module. I defined &quot;param_str&quot; in my module. Then wrote another module that was using the first one.  Then realized I was overwriting an OS module function.<p>I actually have no idea how such collisions are handled. What if I import another module that overwrites the OS module? What if a 3rd party lib uses some variable that another 3rd party lib also defined?<p>A whole set of problems would be gone if such importing was looked down upon.  I mean it is exactly the same situation in Python (but not exacerbated by the name canonicalization), and people realized a long time ago that doing this is not a good idea.