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 は書式設定された docstring を表示するだけでなく、何らかの方法でスクリプトを実行しようとしているように見えます ??

どこが間違っていますか?

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 に答える