JL said:
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.