十分な文書がないサードパーティのライブラリ(パッケージとモジュール)を使用していることがよくあります。したがって、ソースコードの学習は必須となりますが、やや面倒な作業になる可能性もあります。私は(誰もが推測しているように)dir()
とhelp()
の機能を使い始めると、最近私はinspect
モジュールを使い始めました。私はひどく文書化されたコードに潜入するために使用する「方法」と、それを効率化する方法を知りたいと思います。大いに感謝します。Python:実用的なイントロスペクション
答えて
この種のタスクには、IPythonが不可欠です。 ?
(show docstring)と??
(show source)の魔法コマンドは、IPythonの優れた補完システムとライブオブジェクトのイントロスペクションと相まって、実際に私を変えてくれます。
例のセッションは:
In [1]: import sphinx.writers <TAB>
# see available modules and packages - narrow down
In [1]: import shpinx.writers.manpage as manpage
In [2]: manpage.<TAB>
# list and complete on the module's contents
In [3]: manpage.Writer?
# nicely formatted docstring follows
In [4]: manpage.Writer??
# nicely formatted source code follows
In [5]: %edit manpage
# open module in editor
# it really helps if you use something like ctags at this point
In [6]: %edit manpage.Writer
# open module in editor - jump to class Writer
残念ながら、すべてのコードは、この方法を検査することができます。 は、if __name__ == '__main__'
でラップせずにモジュール内でを実行するプロジェクトや、魔法に大きく依存しているプロジェクト(sh)を考えてください。
http://pycallgraph.slowchop.com/またはdoxygenでコールグラフを作成したいと思います。
実際には、AST
モジュールであり、いくつかの場合、比較的無痛な統計解析が可能です。私がもっと欲しいのは、何らかの形で力学的解析を行うことです( "func1"と呼ばれるものの価値が変わり、呼び出しが完全に異なる可能性があるため)。
@ Bob - + 1、それについて聞いたことがない、興味深いと思う。ありがとう。 – root
@root:問題は、その統計的なコールグラフは、Pythonのような動的言語にとっては不十分かもしれないということです。 –
- 1. Pythonのイントロスペクション
- 2. PythonのROSオブジェクトのイントロスペクション
- 3. Pythonのオブジェクト継承によるイントロスペクション
- 4. グラフQLイントロスペクションを効果的に使用するには?
- 5. Pythonでイントロスペクションで必要なパッケージを一覧表示する
- 6. ラムダ式のイントロスペクション
- 7. Clojureでのイントロスペクション
- 8. PythonでSybase DBからSQLAlchemyでテーブルリフレクション/イントロスペクションを実行する方法は?
- 9. 実用的で実用的でない実用的な開発テクニック
- 10. Javaのイントロスペクション - 奇妙な動作
- 11. 実用的なHDL
- 12. Pythonのイントロスペクション:method_descriptorの引数リストを取得しますか?
- 13. Pythonのコンストラクタ関数__init__からの引数のイントロスペクション
- 14. Python、マルチスレッドIOの効率的な実装
- 15. Google App EngineにPythonを搭載した実用的なサーバーサイド
- 16. Railsテスト実行中のイントロスペクション - どのように?
- 17. win32comラッパーのイントロスペクション方法は?
- 18. Actionscript 3イントロスペクション - 関数名
- 19. Groovyのプロパティ注釈イントロスペクション
- 20. 実用的なWPFプログラミング
- 21. 実用的なRubyエクササイズ
- 22. 実用的な説明++ポインタ
- 23. MQTT messageId実用的な実装
- 24. C#の部分的なキーワードの実用的な使用方法
- 25. Nティアアーキテクチャの実用的な使用
- 26. Powershell:$ ^と$$の実用的な使用法?
- 27. IdentityServer3のイントロスペクション用のデフォルトHttpClientの置き換え
- 28. GObjectイントロスペクション用の.NETバインディングはありますか?
- 29. System.Dynamicを使用してCOMオブジェクトをイントロスペクションする
- 30. python shutil copy2の効果的な使用
@ gvalkov - +1 for IPython。 – root