Pythonの制御プロセス棚卸と高度な使い方、謎のスキルが明らかに!

この記事では、条件文、ループ構造、例外処理などの重要な部分、特にリスト内包表記、ジェネレーター、デコレーターなどの高度な使用法を含む、Python の制御フローを包括的かつ詳細に紹介します。さらに、いくつかのユニークな洞察や研究結果を共有し、新しいインスピレーションをもたらすことを願っています。記事の最後には「One More Thing」というコーナーがあり、Python 制御フローの非常に特殊だがあまり知られていない便利なトリックを紹介します。

 

1. 条件文(If-Elif-Else)

Python の条件ステートメントは、1 つ以上のステートメントの実行結果 (True または False) によって実行されることが決定されるコード ブロックです。条件文の基本形式には、if、if-else、および if-elif-else が含まれます。

# if 语句
x = 10
if x > 0:
    print("x is positive")

# if-else 语句
if x % 2 == 0:
    print("x is even")
else:
    print("x is odd")

# if-elif-else 语句
if x < 0:
    print("x is negative")
elif x == 0:
    print("x is zero")
else:
    print("x is positive")

 Python 構文の主要な機能である Python のインデント規則に注意してください。インデントは、上記の if-elif-else のコード ブロックなどのコード ブロックを区別するために使用されます。さらに、Python にはステートメント ブロックを制御するための C++ や Java のような中括弧 {} がなく、完全にインデントに依存しています。

2. ループ構造(For、while)

Python には 2 種類のループがあります。1 つは for ループ、もう 1 つは while ループです。

1 # for循环
2 for i in range(5):
3     print(i)
4 
5 # while循环
6 count = 0
7 while count < 5:
8     print(count)
9     count += 1

Python の for ループはトラバーサル ループに似ており、シーケンス内の各要素をトラバースします。他の多くの言語では、for ループは条件判断を通じてループを制御します。Python の range() 関数は、多くの状況、特にループ構造で非常に役立ちます。

3. 例外処理(Try-Except)

Python では、try-Except ステートメントを使用して、考えられるエラーや例外を処理できます。

try:
    print(1 / 0)
except ZeroDivisionError:
    print("You can't divide by zero!")

Python の例外処理メカニズムは、エラーや例外が発生したときにプログラムを実行し続けるのに役立つ強力なツールです。それだけでなく、Python の例外処理は複数の else 句もサポートしているため、さまざまなタイプの例外を異なる方法で処理できます。さらに、finally 節を使用することもできます。例外が発生するかどうかに関係なく、finally 節内のコードは常に実行され、クリーンアップによく使用されます。

 4つ目は、制御プロセスの高度な使い方です。

Python の制御フローは、単純な条件判断、ループ、例外処理に限定されません。Python には、コードをより効率的かつ簡潔に記述するのに役立つ高度な制御フロー ツールも多数あります。一般的な高度な制御フロー ツールをいくつか示します。

1. リストの内包理解

リスト内包表記は、ループや条件などを 1 行のコードで実行するリストを作成するための優れた方法です。以下はリスト内包表記の例です。

squares = [x**2 for x in range(10)]

上記のコードは、0 から 9 までの正方形のリストを生成します。このリスト内包のプロセスは、「range(10)」内の各「x」について「x」の二乗を計算し、その結果をリストに追加するというものとして理解できます。通常のループ ステートメントと比較して、リスト内包表記はコードがより簡潔であるだけでなく、実行速度も速くなります。これは、リスト内包表記では内部的に最適化が実装されるのに対し、通常のループ ステートメントでは最適化が実装されないためです。

2. ジェネレーター式

ジェネレーター式はリスト内包表記に似ていますが、実際のリストではなくジェネレーター オブジェクトを生成します。ジェネレーター オブジェクトは、すべての値を一度に生成するのではなく、反復ごとに新しい値を生成する反復可能なオブジェクトです。以下はジェネレーター式の例です。

squares = (x**2 for x in range(10))

上記のコードは、反復ごとに平方数を生成するジェネレーター オブジェクトを作成します。`next()` 関数または `for` ループを使用して、このオブジェクトを反復処理できます。ジェネレーター式は、すべての値を一度に生成する必要がないため、リスト内包表記よりもメモリ効率が高くなります。これは大規模なデータを扱う場合に非常に役立ちます。

3. デコレーター 

デコレータは、ソース コードを変更せずに関数やクラスの動作を変更できる非常に強力なツールです。簡単なデコレータの例を次に示します。

 1 def my_decorator(func):
 2     def wrapper():
 3         print("Something is happening before the function is called.")
 4         func()
 5         print("Something is happening after the function is called.")
 6     return wrapper
 7 
 8 @my_decorator
 9 def say_hello():
10     print("Hello!")
11 
12 say_hello()

上記のコードはデコレータ `my_decorator` を定義しており、`say_hello` 関数の呼び出しの前後にメッセージを出力します。`@my_decorator` は、`say_hello` 関数が `my_decorator` で装飾される方法です。デコレータは、ロギング、パフォーマンス テスト、トランザクション処理、キャッシュなど、さまざまな目的に使用できます。多くの場合、デコレータを使用すると、コードがクリーンになり、管理や再利用が容易になります。

もう一つ!!

GitHub やさまざまな技術ブログを読んでいると、「for」ループと「while」ループで「else」句を使用するという、非常に特殊だがほとんど知られていない Python 制御フロー トリックを発見しました。

多くの人は、「for」ループと「while」ループには、ループが正常に終了するときに実行されるオプションの「else」句を指定できることを知らないかもしれません。ループが `break` ステートメントによって終了する場合、`else` 節は実行されません。

 1 for i in range(5):
 2     print(i)
 3 else:
 4     print("Loop finished!")
 5 
 6 count = 0
 7 while count < 5:
 8     print(count)
 9     count += 1
10 else:
11     print("Loop finished!")

この機能はさまざまな状況で非常に役立ちます。たとえば、ループ内の要素を検索します。要素が見つかったら、`break` ステートメントによってループを終了します。ループが正常に終了し、要素が見つからなかった場合は、 「else」句内のコードを実行します。

最後に、私の記事を注意深く読んでくださった皆さんに感謝します。ファンの成長と関心をずっと見ていると、相互主義が常に必要になります。それほど価値のあるものではありませんが、もしあなたがそれを持っていれば、それを奪うことができますそれが必要:

これらの資料は、[ソフトウェア テスト] の友人にとって最も包括的で完全な準備倉庫となるはずです。この倉庫は、最も困難な旅を乗り越える何万人ものテスト エンジニアにも同行してきました。あなたにも役立つことを願っています。

ソフトウェアテストの面接の質問

ソフトウェア テストの質問バンクには、何百万人もの人が参加しました。誰が知っているのか!ネットワーク全体で最も包括的なクイズ ミニ プログラムです。携帯電話を使用して、地下鉄やバスの中でもクイズに答えることができます。

次の面接の質問セクションが取り上げられます。

1. ソフトウェアテストの基礎理論  、2. Web、アプリ、インターフェイス機能テスト、3. ネットワーク、4. データベース、5. Linux 6. Web、アプリ、
インターフェイス自動化、7. パフォーマンステスト  、8. プログラミングの基礎、9. hr 面接の質問、10、公開テストの質問、11、セキュリティ テスト、12、 コンピュータの基本

これは私の QQ 技術交換グループにあります (技術交換とリソースの共有、広告の邪魔をしないでください)

グループに参加すれば無料で持ち帰ることができます。一緒に技術を交換するマスター仲間もいます

入手方法:

おすすめ

転載: blog.csdn.net/qq_56271699/article/details/131231853