[Tutor] main()

Roel Schroeven rschroev_nospam_ml at fastmail.fm
Sat May 21 19:48:38 CEST 2005


Servando Garcia wrote:

> 
>   if __name__ == '__main__':
> 
>   what is the meaning and importance of this code line.  I have been 
> able to glean some information. When you call a script __name__ is set 
> to the "Name" of the script called.  example:   python Hope.py     
> __name__ = Hope

When Hope.py is a module imported into another script, then __name__ 
equals the name of the module as you say. Like this:

### HopeModule.py
print __name__

### Hope.py
import HopeModule

That will print 'HopeModule' if you run python Hope.py

But if the scrip itself is run, __name__ will equal '__main__':

### Hope.py
print __name__

Now python Hope.py prints '__main__', contrary to what you said. Did you 
try it? If your installation does otherwise, it seems there is something 
wrong.

 > but why would I want to do this   if __name__ == '__main__':

 From the above it follows that code following

if __name__ == '__main__':

gets executed when the script itself is run, but not when it is import 
edas a module by another script.

> here a code snippet that I am trying to work through
> 
> #
> #       MAIN
> #
> 
> if __name__ == '__main__':
>          import sys
>          filename = sys.argv[1]
>          f = open(filename)
>          generate(semantic(parse(scan(f))))
>          f.close()
> 
> I feel that if I am calling the script Hope.py than the above code 
> should never get to run because __name__ is equal to "Hope" so why even 
> write it.

Did you try that? The code should really be executed.

-- 
If I have been able to see further, it was only because I stood
on the shoulders of giants.  -- Isaac Newton

Roel Schroeven



More information about the Tutor mailing list