if __name__ == 'main': & passing an arg to a class object

Steven D'Aprano steve at REMOVEME.cybersource.com.au
Mon Apr 30 23:54:50 EDT 2007


On Sun, 29 Apr 2007 07:32:44 -0400, Bart Willems wrote:

> gtb wrote:
>> appear at the end of many examples I see. Is this to cause a .class
>> file to be generated?
> This might be obvious, but no one else mentioned it: the Python 
> interpreter cannot execute code that it hasn't compiled yet, which is 
> why the "if __name__ ..." code is always at the end of the module - to 
> guarantee that the entire file is scanned first.

Nonsense.

Here's my "test.py":

%%%%%

x = 42

if __name__ == "__main__":
    print "x has value", x
    x = 23

print "now x has value", x

%%%%%

It works just as you would expect:


$ python test.py
x has value 42
now x has value 23

And when you import it:

>>> import test
now x has value 42


There is nothing, absolutely nothing, magic about the idiom 
if __name__ == "__main__". It is just an if block, like any other if
block. If you still aren't convinced, try this one:


%%%%%

x = 42

if __name__ == "__main__":
    print "x has value", x
    print "y has value", y

y = 43

%%%%%



-- 
Steven D'Aprano 




More information about the Python-list mailing list