ホームページ バックエンド開発 Python チュートリアル Python の Walrus Operator を使用したコードの最適化: 実際の例と避けるべきアンチパターン

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

Aug 18, 2024 am 06:01 AM

Optimizing Your Code with Python

紹介:
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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Pythonを使用してテキストファイルのZIPF配布を見つける方法 Pythonを使用してテキストファイルのZIPF配布を見つける方法 Mar 05, 2025 am 09:58 AM

Pythonを使用してテキストファイルのZIPF配布を見つける方法

Pythonでファイルをダウンロードする方法 Pythonでファイルをダウンロードする方法 Mar 01, 2025 am 10:03 AM

Pythonでファイルをダウンロードする方法

Pythonでの画像フィルタリング Pythonでの画像フィルタリング Mar 03, 2025 am 09:44 AM

Pythonでの画像フィルタリング

HTMLを解析するために美しいスープを使用するにはどうすればよいですか? HTMLを解析するために美しいスープを使用するにはどうすればよいですか? Mar 10, 2025 pm 06:54 PM

HTMLを解析するために美しいスープを使用するにはどうすればよいですか?

Pythonを使用してPDFドキュメントの操作方法 Pythonを使用してPDFドキュメントの操作方法 Mar 02, 2025 am 09:54 AM

Pythonを使用してPDFドキュメントの操作方法

DjangoアプリケーションでRedisを使用してキャッシュする方法 DjangoアプリケーションでRedisを使用してキャッシュする方法 Mar 02, 2025 am 10:10 AM

DjangoアプリケーションでRedisを使用してキャッシュする方法

Natural Language Toolkit(NLTK)の紹介 Natural Language Toolkit(NLTK)の紹介 Mar 01, 2025 am 10:05 AM

Natural Language Toolkit(NLTK)の紹介

TensorflowまたはPytorchで深い学習を実行する方法は? TensorflowまたはPytorchで深い学習を実行する方法は? Mar 10, 2025 pm 06:52 PM

TensorflowまたはPytorchで深い学習を実行する方法は?

See all articles