Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么';当我使用argparse时,pydoc是否工作?_Python - Fatal编程技术网

Python 为什么';当我使用argparse时,pydoc是否工作?

Python 为什么';当我使用argparse时,pydoc是否工作?,python,Python,对于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

对于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()
如果我取消最后一行的注释,并运行pydocscriptname,那么pydoc似乎会尝试以某种方式运行脚本,而不仅仅是显示格式化的docstring

我哪里出错了?

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社区中,这是一个非常好用且易于理解的习惯用法,因此这里没有任何魔法会让您未来的读者感到困难。基本上,每个模块都有一个
\uuuu name\uuu
属性(即模块的名称)。“主”模块(python开始执行的模块)获得了特殊的名称
\uuuuu main\uuuu
,而不是没有扩展名的典型文件基名。

感谢您的快速响应和澄清。我现在明白了!