python - Allowing Module/package customization with command line paramters without interfering with its users -


i'm curious how in python. imagine have module spam.py i'd control spamminess option -‍-‍spam_more.

how go using argparse or other parsing library still allow main ham.py file optionally use command line arguments while using spam module.?

you can put argument handling stuff inside 'if __name__ == "__main__":' code inside if block run when script run command line or whatever, not if imported module. e.g. typing $ python spam.py in command line cause block executed.

here example using optparse (because haven't used argparse before):

spam.py:

def do_stuff(spammy=false):     if spammy:         print "wow, spammy."     else:         print "i've seen spammier."  if __name__ == "__main__":     optparse import optionparser      p = optionparser()     p.add_option("--spam_more", action="store_true", dest="spammy")     (options, args) = p.parse_args()      do_stuff(options.spammy) 

ham.py:

import spam # optparse stuff...  spam.do_stuff() 

this when use --spam_more on spam.py, spammy set true. ham.py knows nothing , can use it's own optparse stuff use use spam's function, do_stuff() because code inside 'if __name__ == "__main__":' never gets run when spam.py imported module.

it bad practice put import statement inside if block, seems best way.


Comments

Popular posts from this blog

android - getbluetoothservice() called with no bluetoothmanagercallback -

sql - ASP.NET SqlDataSource, like on SelectCommand -

ios - Undefined symbols for architecture armv7: "_OBJC_CLASS_$_SSZipArchive" -