1

对 python 来说还是很新的,所以如果这看起来很明显,请原谅我,但我发现 argparse 阻止我在我的脚本上运行 pydoc。

"""
  Script to blah blah blah
"""

import argparse

parser = argparse.ArgumentParser(description='Script to do something useful')

# If I uncomment this line, pydoc fails !
#args = parser.parse_args()

如果我取消注释最后一行并运行pydoc scriptname,那么 pydoc 似乎会尝试以某种方式运行脚本,而不仅仅是显示格式化的文档字符串?

我哪里错了?

4

1 回答 1

2

pydoc 导入文件,这意味着 argparse 然后会做这件事。解决这个问题的典型方法是设置一个仅在模块作为主模块导入时才会运行的条件:

"""
  Script to blah blah blah
"""

import argparse

parser = argparse.ArgumentParser(description='Script to do something useful')

if __name__ == '__main__':
    args = parser.parse_args()

这是 python 社区中一个非常常用和理解的习语,所以这里没有任何魔法会给你未来的读者带来困难。基本上,每个模块都有一个__name__属性(即模块的名称)。“主”模块(python 开始执行的模块)获取特殊名称__main__,而不是没有扩展名的典型文件基名。

于 2016-05-06T08:07:59.297 回答