紹介:
Python 3.8 で導入されたセイウチ オペレーターは、開発者がコードを簡素化し最適化するための便利なツールです。式内で変数を代入できるため、より簡潔で効率的なプログラミングのアプローチになります。ただし、他のツールと同様に、適切な判断のもと、適量に使用する必要があります。このチュートリアルでは、セイウチ オペレーターの実際の使用例を調査し、避けるべきいくつかのアンチパターンを強調します。
Walrus オペレーターの実際の使用例:
1.条件文の簡略化
セイウチ演算子の最も一般的な使用例の 1 つは、条件ステートメントを簡素化することです。文字列の長さを返す関数があり、その長さが 10 より大きいかどうかを確認したいとします。 Walrus 演算子を使用すると、条件文内で直接変数長を割り当てることができるため、コード行を節約できます。
セイウチ演算子を使用しない条件文の例
長さ = len(文字列)
長さ > の場合10:
print("文字列が 10 文字を超えています。")
セイウチ演算子を使用した例
if (長さ := len(文字列)) > 10:
print("文字列が 10 文字を超えています。")
2.関数呼び出しの繰り返しを避ける
場合によっては、walrus オペレーターを使用すると、関数呼び出しの繰り返しが回避され、コードのパフォーマンスが向上することがあります。次の例では、学生の平均成績を計算しますが、学生がクラスに合格したかどうかも確認する必要があります。セイウチ演算子がなければ、関数を 2 回呼び出す必要がありますが、これを使用すると、関数の結果を変数に代入し、それを条件文と計算の両方で使用できます。
セイウチオペレーターを使用しない例
grade1 = compute_grade(student, test1)
Grade2 = compute_grade(student, test2)
if (グレード 1 + グレード 2) / 2 >= 70:
print("生徒はそのクラスに合格しました。")
if ((grade1 := compute_grade(student, test1)) + (grade2 := compute_grade(student, test2))) / 2 >= 70:
print("生徒はそのクラスに合格しました。")
3.リスト内包表記の簡略化
リスト内包表記は、リスト内のデータを操作およびフィルタリングするための強力なツールです。ただし、複雑なリストの内包表記は、読み取りや保守が困難になる可能性があります。セイウチ演算子を使用すると、式内で変数を代入できるため、これらの理解を簡素化できます。
セイウチ演算子を使用しないリスト内包表記の例
results = [compute_profit(sales,cost) for sales,cost in sales_data if compute_profit(sales,cost)> 50]
セイウチ演算子を使用した例
results = [(profit := compute_profit(sales,cost)) (売上の場合)、利益 > の場合は sales_data のコスト50]
アンチパターン: Walrus オペレーターを使用しない方法:
1.複雑なリスト内包表記
セイウチ演算子はリストの内包表記を簡略化できますが、使いすぎるとコードが複雑で読みにくくなる可能性があります。このアンチパターンでは、複数のネストされた条件と代入を含むリスト内包表記が見られます。これは読み取りや保守が困難になる可能性があるため、ロジックを個別のステップに分割することをお勧めします。
ネストされたセイウチ演算子を使用した乱雑なリスト内包の例
売上データ = [(100, 70), (200, 150), (150, 100), (300, 200)]
results = [(売上, 原価, 利益, 売上率) 売上の場合、売上データの原価 if (利益 := compute_profit(売上, 原価)) >; 50
if (売上率 := 売上高 / 原価) > 1.5 if (利益マージン := (利益 / 売上)) > 0.2]
2.ネストされた Walrus オペレーター
ネストされたセイウチ演算子を使用すると、コードが読みにくく理解しにくくなる可能性があります。この例では、単一の式内にネストされた演算子が見られ、ロジックを解凍してコードを理解することが困難になっています。読みやすさと保守性を高めるために、ロジックを複数行に分割することをお勧めします。
ネストされたセイウチ演算子の例
値 = [5, 15, 25, 35, 45]
しきい値 = 20
結果 = []
値の値の場合:
if (above_threshold := 値 > しきい値) and (incremented := (new_value := value + 10) > 30):
results.append(new_value)
print(結果)
結論:
セイウチ オペレーターはコードを簡素化し最適化するための強力なツールですが、使用には注意が必要です。その機能と制限を理解することで、コード内で効果的に使用し、一般的なアンチパターンを回避できます。
MyExamCloud の Python 認定模擬テストは、Python 認定の準備をしている人にとって便利なツールです。
以上がPython の Walrus Operator を使用したコードの最適化: 実際の例と避けるべきアンチパターンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。