[Tutor] What is `if __name__ == "__main__"` for?

Hilton Garcia Fernandes hgfernan at lsi.usp.br
Fri May 20 14:56:04 CEST 2011


Hi, Ganesh !

Adding to what Christian already stated, i'd like to tell you that an
important use of this feature is the so-called modular testing, aka
unit testing. I mean: that way you can provide functionality in your
module to test it independently of any application it may be contained
in.

Unit testing in general is easier and quicker to do than to test the
whole application in which any given module is contained, along with
probably lots of other modules.

The Wikipedia article Unit Testing, at
https://secure.wikimedia.org/wikipedia/en/wiki/Unit_testing

will make things clear.

All the best,
hilton

On Fri, Maio 20, 2011, Christian Witts <cwitts at compuscan.co.za> said:

> On 2011/05/20 01:29 PM, Christian Witts wrote:
>> On 2011/05/20 01:09 PM, Ganesh Kumar wrote:
>>> Hi Gurus,
>>>
>>> I am new python programming.. I see many programs
>>> if __name__ == '__main__':
>>> when I check __name__ always eq __main__.
>>> what purpose use these structure.. please guide me..
>>>
>>> -Ganesh
>>>
>>
>> If you execute the script directly ie. python script.py the __name__
>> will be __main__ but if you import it it's the name of the file.
>>
>> #first.py
>> print __name__
>>
>> #second.py
>> import first
>>
>> $ python first.py
>> __main__
>>
>> $ python second.py
>> first
>>
> 
> Sorry, forgot to add before sending that the reason I use the `if 
> __name__ == '__main__'` structure is so that I can have a standalone 
> application that has it's defined entry point and then if I want to 
> reuse functions in the application I can import it without having to 
> worry that it will execute the entire thing.
> 
> -- 
> Christian Witts
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
> 

-- 
Hilton Garcia Fernandes
Nucleo de Tecnologias sem Fio (NTSF) -- Wireless Technologies Team
Lab de Sistemas Integraveis Tecnologico (LSI) -- Integrable Systems Lab
Escola Politecnica (Poli) -- Engineering School
Univ S Paulo (USP)
Tel: (5511)3091-5311 (work)
     (5511)8131-5213 (mobile)
Av. Prof. Luciano Gualberto,158 trav.3 CEP 05508-900
S. Paulo -- SP -- Brazil
Pagina inicial: http://www.lsi.usp.br/~hgfernan

Blog
http://bit.ly/8YITGc

com espelhamento em
http://bit.ly/4SIgzO






More information about the Tutor mailing list