On 11/1/2010 2:18 PM, brad...@hotmail.com wrote:
Sorry that is what I mean. What is it for?
Sent wirelessly from my BlackBerry.

Does it require you to toppost? Understanding the above requires one to guess what 'that' forward references.

Perhaps the OP means:

      if __name__ == "__main__":

I presume that this is the 'that' which you forward-referenced. If so...

Python reserves names of the form __xyz__ for itself. This is intentionally a bit awkward so as to stand out in code and not conflict with names a programmer might choose. This form is used for names that programmers *mostly* do not need to use. The system names that we do need to use constantly, like 'None', 'def', and 'int' have normal spellings. These are easy to type, but may conflict with a name that a programmer might be using.

Every module has a name stored in its __name__ attribute. The the interpreter starts, it names the top level module, which is run directly instead of being imported, as '__main__'. When a module is run indirectly, by being imported, its name is what you expect from the docs or from the name of its file.

So:
1. a module can have one of two runtime names (as defined by it __name__ attribute): '__main__' or its proper name. 2. a module's runtime name depends on whether it is run directly or imported. 3. a module can therefor tell how it is being run; this is usually done with "if __name__ == '__main__'. 4. a module can change its behavior depending on how it is run by putting code in the body of the conditional statement. Such a conditional statement is entirely OPTIONAL.

There are two things people do in such a body.
a. If the module is meant either imported or run as a useful standalone program (such as the stdlib trace module), check for arguments in sys.argv, do some useful work, and report.
b. If the module is normally only meant to be imported, run a test.

If a module is only meant to run as a program, or if it is only meant to be imported and all its tests are in a separate file, there there is no need for the conditional statement.

--
Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to