S
Steven D'Aprano
Given this module:
#funny.py
import sys
print "Before:"
print " __name__ =", __name__
print " sys.modules[__name__] =", sys.modules[__name__]
sys.modules[__name__] = 123
print "After:"
print " __name__ =", __name__
print " sys =", sys
when I run it I get these results:
[steve@sylar python]$ python2.6 funny.py
Before:
__name__ = __main__
sys.modules[__name__] = <module '__main__' from 'funny.py'>
After:
__name__ = None
sys = None
I'm completely perplexed by this behaviour. sys.modules() seems to be a
regular dict, at least according to type(), and yet assigning to an item
of it seems to have unexpected, and rather weird, side-effects.
What am I missing?
#funny.py
import sys
print "Before:"
print " __name__ =", __name__
print " sys.modules[__name__] =", sys.modules[__name__]
sys.modules[__name__] = 123
print "After:"
print " __name__ =", __name__
print " sys =", sys
when I run it I get these results:
[steve@sylar python]$ python2.6 funny.py
Before:
__name__ = __main__
sys.modules[__name__] = <module '__main__' from 'funny.py'>
After:
__name__ = None
sys = None
I'm completely perplexed by this behaviour. sys.modules() seems to be a
regular dict, at least according to type(), and yet assigning to an item
of it seems to have unexpected, and rather weird, side-effects.
What am I missing?