「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Python の Walrus Operator を使用したコードの最適化: 実際の例と避けるべきアンチパターン

Python の Walrus Operator を使用したコードの最適化: 実際の例と避けるべきアンチパターン

2024 年 8 月 27 日に公開
ブラウズ:474

Optimizing Your Code with Python

導入:
Python 3.8 で導入されたセイウチ オペレーターは、開発者がコードを簡素化し最適化するための便利なツールです。式内で変数を代入できるため、より簡潔で効率的なプログラミングのアプローチになります。ただし、他のツールと同様に、適切な判断のもと、適量に使用する必要があります。このチュートリアルでは、セイウチ オペレーターの実際の使用例を調査し、避けるべきいくつかのアンチパターンを強調します。

Walrus オペレーターの実際の使用例:
1.条件文の簡略化
セイウチ演算子の最も一般的な使用例の 1 つは、条件ステートメントを簡素化することです。文字列の長さを返す関数があり、その長さが 10 より大きいかどうかを確認したいとします。セイウチ演算子を使用すると、条件ステートメント内で直接変数長を割り当てることができるため、コード行を節約できます。

セイウチ演算子を使用しない条件文の例

長さ = 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.リスト内包表記の簡略化
リスト内包表記は、リスト内のデータを操作およびフィルタリングするための強力なツールです。ただし、複雑なリストの内包表記は、読み取りや保守が困難になる可能性があります。セイウチ演算子を使用すると、式内で変数を代入できるため、これらの理解を簡素化できます。

セイウチ演算子を使用しないリスト内包表記の例

結果 = [売上の場合はcompute_profit(売上, コスト)、compute_profit(売上, コスト) > 50の場合はsales_dataのコスト]

セイウチ演算子を使用した例

results = [(profit := compute_profit(sales,cost)) 売上、利益 > 50 の場合は sales_data のコスト]

アンチパターン: 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)
印刷(結果)

結論:
セイウチ オペレーターはコードを簡素化し最適化するための強力なツールですが、使用には注意が必要です。その機能と制限を理解することで、コード内で効果的に使用し、一般的なアンチパターンを回避できます。

MyExamCloud の Python 認定模擬テストは、Python 認定の準備をしている人にとって便利なツールです。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/myexamcloud/optimizing-your-code-with-pythons-walrus-operator-real-world-examples-and-anti-patterns-to-avoid-10ii?1権利侵害、削除するには[email protected]までご連絡ください
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3