__main__中的Python getopt()

时间:2011-12-18 08:13:09

标签: python getopt

我是一名Python初学者,并成功获得了第一个传入CLI参数的程序来运行。得到了很多Handling command line options的帮助。

我的问题是:为什么在示例5.45中使用了单独的def main(argv),而不是在try/except内调用__main__块。

例5.45

def main(argv):                         
    grammar = "kant.xml"
    try:                                
        opts, args = getopt.getopt(argv, "hg:d", ["help", "grammar="]) 2
    except getopt.GetoptError:
        usage()
        sys.exit(2)                     

...

if __name__ == "__main__":
    main(sys.argv[1:])

希望精通Python的人可以分享你的智慧。

TIA - Ashant

1 个答案:

答案 0 :(得分:1)

使用main函数的一个优点是它允许轻松重用代码:

import sys
import script

script.main(sys.argv[1:])
# or, e.g. script.main(['-v', 'file.txt']), etc

如果作为模块导入,脚本的__main__块中的任何代码都不会运行。因此main函数充当一个简单的接口,提供对脚本的所有正常功能的访问。然后,__main__块通常只包含一个main调用,以及任何其他非必要代码(例如测试)。

可以找到Python作者关于如何编写好的main函数的一些提示here