Here's a fun question for the python lovers in the crowd. We ran into some unexpected behavior in our code and don't have a good explanation for why it happens.

We've reduced it down to a super simple test case with three files:

test.py
--------
import foo
try:
    foo.print_stuff()
except NameError:
    print 'expected NameError'
import foo.cars
foo.print_stuff() # why no NameError?

foo/__init__.py
---------
def print_stuff():
    print cars.__file__

foo/cars.py
---------
def honk():
    pass

Why doesn't the second call to print_stuff() raise a NameError? Why does importing something in test.py add it to the foo module's namespace?

--
--Leo

Reply via email to