まずはレンダリングを見てみましょう:
どうですか、とても素晴らしいです~
以下では、この視覚化プロセスを一緒に完了しましょう。
画像生成のプロセスは、graphviz ツールに依存するため、最初にダウンロードしてインストールします。
ダウンロード アドレス
次は2 つの Python 依存ライブラリもインストールする必要があります。
pip install pycallgraph
まず基本的なコードを書きましょう;
from pycallgraph import PyCallGraph from pycallgraph.output import GraphvizOutput class Banana: def eat(self): pass class Person: def __init__(self): self.no_bananas() def no_bananas(self): self.bananas = [] def add_banana(self, banana): self.bananas.append(banana) def eat_bananas(self): [banana.eat() for banana in self.bananas] self.no_bananas() def main(): graphviz = GraphvizOutput() graphviz.output_file = 'basic.png' with PyCallGraph(output=graphviz): person = Person() for a in range(10): person.add_banana(Banana()) person.eat_bananas() if __name__ == '__main__': main()
コードは比較的単純で、2 つの単純なクラスを定義しています。pycallgraph のコア コードは主に、with コード ブロックの下の main 関数にあります。定義したコードを一度実行します。
上記のコードを実行すると、現在のディレクトリに Basic.png 画像ファイルが生成されます。
生成された画像から、メインコードブロックから各クラスの初期化まで、コード全体の実行プロセスを明確に確認できます。
別のより複雑な例を見てみましょう:
import re from pycallgraph import PyCallGraph from pycallgraph import Config from pycallgraph.output import GraphvizOutput def main(): graphviz = GraphvizOutput() graphviz.output_file = 'regexp.png' config = Config(include_stdlib=True) with PyCallGraph(output=graphviz, config=config): reo = compile() match(reo) def compile(): return re.compile('^[abetors]*$') def match(reo): [reo.match(a) for a in words()] def words(): return [ 'abbreviation', 'abbreviations', 'abettor', 'abettors', 'abilities', 'ability', 'abrasion', 'abrasions', 'abrasive', 'abrasives', ] if __name__ == '__main__': main()
コードも無責任ですが、通常のコードがコンパイラ内で呼び出されます。最終的に生成された図を見てみましょう:
多くの通常の内部関数が内部で呼び出されるため、コード プロセス全体がはるかに複雑になっていることがわかりますが、それでも全体は非常に明確です
このサードパーティ ライブラリは、多くの Python 愛好家、特に Python 分野を始めたばかりの人にとって間違いなく朗報です。馴染みのない複雑なコード ブロックに遭遇したときは、これを使用するのもよいでしょう。視覚化を試してそれができるかどうかを確認するライブラリからインスピレーションを得てください~
以上がPython プログラムの呼び出しプロセスを簡単に視覚化するアーティファクトの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。