Python関数フラット管理、初めてプログラム構造図を描いた経験

ソフトウェア:dia
ここに画像の説明を挿入します
昨日描いた絵ですが、実はほとんどの機能が完了しているのですが、Unicode文字セット機能がすべてなので、ファイルに書きたいのですが、今日書いた時は、それぞれを分離するのは本当に難しいと思いました。モジュールはうまく接続されているので、この構造図は拒否されます。
実際、フローチャートは好きなように自由に描くことができますが、それは関数にのみ適用されます。複数の機能を組み合わせて、初めて絵を描いて、初めて統合したとき、これはフローチャートと同じではないことがわかったので、それを構造図と呼びます。最も重要なことは、統合。
たとえば、文字セットの比較を行った後、ホームページに戻りたいのですが、前のページに戻ってから前のページに戻りたいのですが、直接ホームページに戻ることはできませんか?ホームページをmain()として記述し、main()を直接呼び出すことはできますが、これは反復構造と同じです。現在の関数は解放されず、mainは現在の関数で呼び出されます。最初は尻尾になりました。
考えて構造を変えることにしました。インターネット上の2つのオンライン図面で、参考として同様のテンプレートを見つけました。実は、オンラインで絵を描くのは好きではなく、完全にマスターしたいです。使い勝手は悪いかもしれませんが、貧しくてお金をかけるのに耐えられません!

processon:分散セグメントロックテンプレート。ここに画像の説明を挿入します
クイック図面:プログラム設計フローチャート。
ここに画像の説明を挿入します
アイデアがあります。グローバル変数領域と機能メニュー管理領域があります。各モジュールはメニュー管理モジュールに接続できるため、上部の構造はモジュールは使用されなくなりました。
ここに画像の説明を挿入します

from sys import exit

def test(): # 210 µs 函数扁平化处理
    t='f1'
    def m():
        for i in range(1000):
            if t=='f1':f1()
            elif t=='f2':f2()
    def f1():
        nonlocal t
        t='f2'
        return
    def f2():
        # print('bingo')
        # exit()
        return
    m()


# t m - f1
#     - f2    

def vs(): # 259 µs 函数层层return
    def m():
        for i in range(1000):
            f1()
    def f1():
        f2()
        return
    def f2():
        # print('bingo')
        return
    m()

# m - f1 - f2

実際、後の段階で、ifも関数を含む辞書に置き換えたいと思います。これは今日の場合です。

もちろん、すべてを1つのレイヤーに書き込んでみませんか?1つのレイヤーに書き込むことは確かに可能ですが、論理機能の観点からは、少なくとも文字を判断することは、文字セットとは関係ありません。統計に基づくよりも優れた判断方法を自分で作成します。収集は、より高速です。でも可能性は低いと思います。

別の例として、一般的なコレクションを比較すると、簡単に分離できます。別のリストを作成せず、履歴レコードがある場合は、もう少し複雑に書く必要がありますが、履歴の表示は別のリストのままです。関数。たとえば、セット比較の結果を別の辞書に保存します。

おすすめ

転載: blog.csdn.net/jhsxy2005/article/details/113735546