我是一名Python初学者,并成功获得了第一个传入CLI参数的程序来运行。得到了很多Handling command line options的帮助。
我的问题是:为什么在示例5.45中使用了单独的def main(argv)
,而不是在try/except
内调用__main__
块。
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
答案 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。