question on "import __main__"
Robert Kern
rkern at ucsd.edu
Fri Aug 26 11:00:41 EDT 2005
wen wrote:
> i have written some code in test.py as below:
> import __main__
> if __name__!='__main__':
> print 1
>
> print 2
>
> when i run test.py, i got
> 2
> on the screen.
>
> now, i have some question about the code, 1. since no __main__ module at
> all, why it's legal to write "import __main__"?
Because a module object is created for the running script. It is placed
in sys.modules with the name "__main__". When you "import __main__", the
import mechanism looks in sys.modules first for a module with the name
"__main__" and uses that if it's there.
> 2. since if running a script independently, the __name__ should be
> '__main__', why it's not in the above code?
It is. However, you wrote "!=" instead of "==".
--
Robert Kern
rkern at ucsd.edu
"In the fields of hell where the grass grows high
Are the graves of dreams allowed to die."
-- Richard Harter
More information about the Python-list
mailing list