我试图理解我发现的一些读取命令行参数的代码(附在下面)。我关心的是 "if __name__ == __main__"
行的目的是……
为什么我要使用该行而不是仅使用下面的代码 main(sys.argv[1:])
。它有什么额外用途?
import sys, getopt
def main(argv):
inputfile = ''
outputfile = ''
try:
opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
except getopt.GetoptError:
print 'test.py -i <inputfile> -o <outputfile>'
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print 'test.py -i <inputfile> -o <outputfile>'
sys.exit()
elif opt in ("-i", "--ifile"):
inputfile = arg
elif opt in ("-o", "--ofile"):
outputfile = arg
print 'Input file is "', inputfile
print 'Output file is "', outputfile
if __name__ == "__main__":
main(sys.argv[1:])
原文由 Chris Headleand 发布,翻译遵循 CC BY-SA 4.0 许可协议
好吧,假设其他人想在他们自己的程序中使用您的模块中的函数。他们导入你的模块……然后它开始做自己的事情!
使用
if __name__ == "__main__"
,这不会发生。如果它作为 主 模块运行,你的模块只会“做它的事情”。否则它就像一个图书馆。它通过简化代码来鼓励代码重用。(正如 Sheng 所提到 的,您可能希望自己将模块导入另一个脚本以进行测试。)