「手をつないでPythonを学ぶ」37-プログラムの再構築

前回の記事「Pythonを手に取って学ぶ」36-エラーと例外の処理では、あらゆる種類の不確実な状況に優雅に立ち向かうことができるように、エラーと例外を処理する方法を学びました。そして、ユーザーに異常があると感じさせます。私たちのプログラムで。

エラーと例外の処理は比較的独立したコンテンツであり、以前に紹介したPythonプログラミングの基本的な知識を補足するものでもあります。

この時点で、Pythonの基本的なプログラミング知識の紹介は完了しました。残りは、それをさらに学習して適用する方法です。

今日は、これまでに学んだファイル操作と例外処理の方法を応用して復習します。比較的実際の例を使って、データの保存と読み取りのアプリケーションシナリオをシミュレートし、実際のアプリケーションにデータを保存する方法を示します。それがどのように機能するかを読んでください。

同時に、この例を借りて、プログラムのリファクタリングのプロセス、つまり、関数を合理的に設定し、コード構造を最適化することによって、プログラム構造をより明確で読みやすくする方法を示しました。

1.データストレージの適用例

私たちがコンピューターと対話するとき、コンピューターは通常、名前などの情報を最初に入力する必要があるため、コンピューターと対話するプロセスを初めて設計します。このとき、コンピューターは私たちに名前を入力して記録するように要求します。

In [1]: import json
        username = input("What's your name?")
        filename = 'username.json'
        with open(filename, 'w') as f:
            json.dump(username, f)
            print("We'll remember you when you come back, {}!".format(username))
Out[1]: What's your name? mnpy
        We'll remember you when you come back, mnpy!

この時点で、データファイルusername.jsonにユーザー情報が保存されています。ファイルを開いて確認できます。プログラムに再度入ると、コンピューターは最初にデータファイルを読み取り、次にウェルカムインターフェイスを表示します。

In [2]: import json
        filename = 'username.json'
        with open(filename) as f:
            username = json.load(f)
            print("Welcome back, {}!".format(username))
Out[2]: Welcome back, mnpy!

次に、上記の2つのプログラムをマージします。ユーザーが入力すると、コンピューターは最初にユーザー情報が存在するかどうかを判断し、存在する場合はウェルカムインターフェイスを表示し、存在しない場合はユーザーに情報の入力を求めます。

このコードでは、if ... else ...ステートメントを使用する必要があると考えますが、判断条件、つまりユーザー情報(username.jsonファイル)が存在するかどうか、存在する場合はプログラム実行を継続できます。存在しない場合は、エラーが報告され、プログラムの実行を継続できません。

この問題については、例外およびエラー処理でtry ... exception ... elseステートメントを使用できます。ファイルが存在しなくても、エラーによるプログラムの中断はありません。

In [3]: import json

        filename = 'username.json'
        
        try:
            with open(filename) as f:
                username = json.load(f)
                
        except FileNotFoundError:
            username = input("What's your name?")
            
            filename = 'username.json'
            with open(filename, 'w') as f:
                json.dump(username, f)
                print("We'll remember you when you come back, {}!".format(username))
                
        else:
            print("Welcome back, {}!".format(username))

上記のプログラムを実行します。以前にusername.jsonファイルを保存したので、試行後にファイルを開くプロセスに例外はなく、実行結果は次のようになります。

Out[3]: Welcome back, mnpy!

以前のusername.jsonファイルを削除してこのプログラムを実行すると、試行後のプログラムはファイルが見つからないため、ファイルが見つからないというエラー(FileNotFoundError)がトリガーされ、その後のプログラムが実行されて実行されます。 :

Out[3]: What's your name? mnpy
        We'll remember you when you come back, mnpy!

2.プログラムの再構築

上記のプログラムは実際に私たちの期待した目標を達成しましたが、コード記述仕様、構造の明確さ、および読みやすさの点でまだ完全ではありません(プログラムは比較的単純であるため、あまり明白ではありません)。

すでに正常に実行できる一連の構造調整または機能アプリケーションを通じて、プログラム構造をより明確で読みやすくするこのプロセスは、再構築と呼ばれます。

次に、上記のプログラムを最適化し、リファクタリングプロセスを一緒に体験します。

では26-カスタム機能「の学習のPythonあなたと」、私たちは一つ以上の機能にプログラムのロジックやコードのほとんどを入れ、その後、メインへの主要プログラムを定義することである標準Pythonプログラミング構造を、言及しました()関数と同時に、「if __name__ == '__ main __':」などのステートメントを使用して、プログラム全体の操作をガイドします。

この規範的な構造によれば、上記のプログラムは次のように再構築できます。

In [4]: import json
        def main():   # 主程序
            
            def greet_user():
                filename = 'username.json'
                
                try:
                    with open(filename) as f:
                        username = json.load(f)
                        
                except FileNotFoundError:
                    username = input("What's your name?")    
                    
                    filename = 'username.json'
                    with open(filename, 'w') as f:
                        json.dump(username, f)
                        print("We'll remember you when you come back, {}!".format(username))
                        
                else:
                    print("Welcome back, {}!".format(username))  
            
            greet_user()
            
        if __name__ == '__main__':
            main()

このプログラムは、標準化されたプログラム構造を実装し、メインコードをgreet_user()関数に配置しますが、greet_user()関数では最適化されていません。つまり、main()関数には、関数で構成されるステートメントも必要です。同じではなく、関数内のプログラムはコマンドの組み合わせです。

この目標を達成するために、プログラム全体のアクションは実際には3つであると考えます。1。ユーザーに情報を入力させる; 2。ユーザー情報を取得する; 3。ウェルカムインターフェイスを表示する。

次に、これら3つのアクションに従って元のプログラムを分解し、各アクションを関数として定義して、コードの再構築の効果を確認します。

In [5]: """
            程序名称:Welcome back!
            程序作者:mnpy
            程序介绍:用于获取用户信息及展示欢迎界面
            程序版本:2021年1月1日   V1.0
        """
        
        import json
        
        # 主程序
        def main():
            
            # 1、让用户输入信息    
            def get_new_username():
                username = input("What's your name?")
                
                filename = 'username.json'
                with open(filename, 'w') as f:
                    json.dump(username, f)
                
                return username
            
            # 2、获取用户信息      
            def get_stored_username():  
                filename = 'username.json'
                try:
                    with open(filename) as f:
                        username = json.load(f)  
                except FileNotFoundError:  
                    return None
                else:
                    return username
                
            # 3、显示欢迎界面
            def greet_user():
                username = get_stored_username()
                if username:
                    print("Welcome back, {}!".format(username))    
                else:
                    get_new_username()
                    print("We'll remember you when you come back, {}!".format(username))            
            
            # 引导程序启动
            greet_user()
            
        if __name__ == '__main__':
            main()

リファクタリング後、コードは標準化された構造要件を満たすだけでなく、メインプログラム全体で、プログラムの3つの主要なアクションに従って3つの関数が形成され、各関数は特定の明確な目標を達成できます。現時点では、プログラム全体の構造がより明確になっています。

サンプルプログラムは全体的に比較的単純であるため、違いは明らかではない可能性があります。大規模なプログラムの場合、特にプログラムが複数の人によって完了する場合、この構造化されたリファクタリングは非常に重要になります。

上記は、これまでに学んだことを簡単にまとめたアプリケーションであり、アプリケーション例を通じてプログラムの再構築のプロセスも体験しました。

これまでのところ、Pythonの基本的な知識の主要部分はほとんど紹介されています。次の記事では、これまでに学んだことを要約し、構造化された方法を使用して、この段階で学んだことを整理して要約します。しばらくお待ちください。

 

 

画像

 


この記事を読んでくれてありがとう!ご不明な点がございましたら、メッセージを残してご相談ください^ _ ^

「手をつないでPythonを学ぶ」シリーズの他の記事を読むには、公式アカウントに従ってメニュー選択をクリックするか、以下のリンクをクリックして直接アクセスしてください。

「手をつないでPythonを学ぶ」1-なぜPythonを学ぶのか?

「手をつないでPythonを学ぶ」2-Pythonのインストール

「手をつないでPythonを学ぶ」3-PyCharmのインストールと構成

「手をつないでPythonを学ぶ」4-HelloWorld!

「手をつないでPythonを学ぶ」5-JupyterNotebook

「手をつないでPythonを学ぶ」6文字の識別

「手をつないでPythonを学ぶ」7-文字列のインデックス

「手をつないでPythonを学ぶ」8弦スライシング

「手をつないでPythonを学ぶ」9弦操作

「手をつないでPythonを学ぶ」10文字列関数

「手をつないでPythonを学ぶ」11-文字列のフォーマットされた出力

「手をつないでPythonを学ぶ」12-数字

「手をつないでPythonを学ぶ」13-操作

「手をつないでPythonを学ぶ」14-インタラクティブな入力

「手をつないでPythonを学ぶ」15-判断の声明

「手をつないでPythonを学ぶ」16ループステートメント

「手をつないでPythonを学ぶ」17-ループの終わり

「手をつないでPythonを学ぶ」18ループステートメント

「手をつないでPythonを学ぶ」19-第1段階の概要

「手をつないでPythonを学ぶ」20リスト

「手をつないでPythonを学ぶ」21タプル

「手をつないでPythonを学ぶ」22-辞書

「手をつないでPythonを学ぶ」23-組み込みシーケンス関数

「手をつないでPythonを学ぶ」24-コレクション

「手をつないでPythonを学ぶ」25リスト内包

「手をつないでPythonを学ぶ」26-カスタム関数

「手をつないでPythonを学ぶ」27-カスタム関数のパラメーター

「手をつないでPythonを学ぶ」28-カスタム関数の戻り値

「手をつないでPythonを学ぶ」29-無名関数

「手をつないでPythonを学ぶ」30モジュール

「手をつないでPythonを学ぶ」31-ファイルを開く

「手をつないでPythonを学ぶ」32-ファイルの読み方

「手をつないでPythonを学ぶ」33-ファイルを閉じる

「手をつないでPythonを学ぶ」34-ファイル作成

「手をつないでPythonを学ぶ」35-データストレージ

「手をつないでPythonを学ぶ」36-エラーと例外処理

ファンの方へ:「Pythonも言った」パブリックアカウントをフォローし、「hand 37」と返信すると、この記事で使用されているサンプル文を無料でダウンロードできます。

Pythonについても話します-Python愛好家のための学習と共有の領域

 

おすすめ

転載: blog.csdn.net/mnpy2019/article/details/111658434