question on "import __main__"

W

wen

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__"?

2. since if running a script independently, the __name__ should be
'__main__', why it's not in the above code?


thank you in advance.

with my kind regards,
Wen
 
R

Robert Kern

wen said:
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
(e-mail address removed)

"In the fields of hell where the grass grows high
Are the graves of dreams allowed to die."
-- Richard Harter
 
I

infidel

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__"?

__main__ is the module that the interpreter starts executing. So
"import __main__" is legal, though I'm guessing it doesn't really do
anything because the module is already loaded (since it's running).
2. since if running a script independently, the __name__ should be
'__main__', why it's not in the above code?

But it is.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,781
Messages
2,569,615
Members
45,294
Latest member
LandonPigo

Latest Threads

Top