On Wednesday, December 11, 2013 7:47:34 PM UTC+5:30, Roy Smith wrote: > JL wrote:
> > Python scripts can run without a main(). What is the advantage to using a > > main()? Is it necessary to use a main() when the script uses command line > > arguments? (See script below) > > #!/usr/bin/python > > import sys > > def main(): > > # print command line arguments > > for arg in sys.argv[1:]: > > print arg > > if __name__ == "__main__": > > main() > No, it's not necessary, but it's a good idea. > For one thing, it lets you import your script without actually running > it. We recently tracked down a long-standing bug where some maintenance > script we had started out with: > import os > os.environ['DJANGO_SETTINGS_MODULE'] = 'whatever' > somebody imported that script in another part of the system because > there was some convenient definition that he wanted to reuse. > Unfortunately, the act of importing the script changed the environment! > The fix was to move the setting of the environment variable to inside > the main() routine. If you always follow the rule that you always put > all your executable code inside main(), you'll never run into problems > like that. I guess these are important but somewhat advanced considerations. For a beginner, its important to get that there is a bit of a pun here: The function habitually called 'main' may be called that or anything else It can have or not have an argument as Ben pointed out -- maybe more than one also. The module name __main__ is however sacrosanct and hardwired into python. The habit of connecting the one with the other is partly conventional and partly unavoidable -- https://mail.python.org/mailman/listinfo/python-list