リファクタリングは、コードをよりクリーンかつ効率的にするのに役立ちます。ここでは、Python の初心者向けの 5 つの一般的なリファクタリングを紹介します。
私。ブール式の簡略化
一般的なパターンは、True または False を返すためだけに if-else ブロックを使用することです。例:
if condition: return True else: return False
次のようにリファクタリングします:
return condition
条件自体はすでにブール式であるため、if-else ブロックは不要です。条件を直接返すことにより、コードが短くなり、読みやすくなります。これは、機能を変更せずに明瞭さを向上させるシンプルですが効果的な方法です。
II. for / if
の代わりにリスト内包表記を使用する初心者はリストを構築するために if ステートメントを含む for ループをよく使用します。例:
result = [] for item in items: if condition(item): result.append(item)
それをリスト内包表記にリファクタリングします:
result = [item for item in items if condition(item)]
リスト内包表記は、リストを構築するためのより簡潔な方法を提供します。また、Python によって内部的に最適化されるため、通常は同等の for ループよりも高速です。このアプローチは、特に単純なリスト作成タスクの場合、読みやすくなります。
III.計算の繰り返しを避ける
ループ内で同じ関数を複数回呼び出す場合は、結果を変数に格納します。例:
for item in items: if len(item) > 5: result.append(item) ...
次のようにリファクタリングします:
for item in items: len = len(item) if len > 5: result.append(item) ...
この条件が複数の elif またはネストされた if ステートメントで保持されるかどうかを想像してください。ここでは、len(item) が反復ごとに 2 回呼び出されます。これは、特に大きなリストの場合、非効率的になる可能性があります。 len(item) の結果を変数 (len) に格納すると、計算の繰り返しが不要になり、パフォーマンスが向上し、コードがすっきりします。これは基本的な例です。
IV.ループをマップとフィルターに置き換えます
明示的なループを記述する代わりに、map() や filter() などの Python の組み込み関数を使用すると、より効率的かつ簡潔になります。たとえば、リスト内の各項目を 2 倍にするには:
result = [] for item in items: result.append(item * 2)
次のようにリファクタリングします:
result = list(map(lambda x: x * 2, items))
または、5 より大きい項目をフィルターするには:
result = [] for item in items: if item > 5: result.append(item)
次のようにリファクタリングします:
result = list(filter(lambda x: x > 5, items))
map() と filter() は両方とも関数を引数として受け取るので、ラムダを使用して小さな匿名関数を定義できます。ラムダ関数は、単純な操作を定義する簡潔な方法です。たとえば、lambda x: x * 2 は、x を 2 で乗算する関数を作成します。map() と filter() の利点は、多くの場合、for ループを使用するより効率的であり、通常は読みやすいことです。リスト内包表記を使用することもできます (上記を参照)。
V 複数の if ステートメントを結合する
複数の条件をチェックする場合、論理演算子 (and、or) を組み合わせてコードを簡素化できます。例:
if a > 0: if b > 0: result = a + b
次のようにリファクタリングします:
if condition: return True else: return False
これにより、不必要なネストが減り、コードが読みやすく、保守しやすくなります。条件を 1 つの if ステートメントに結合すると、ロジックの流れが明確になり、冗長性がなくなります。
結論
リファクタリングとは、コードの動作を変更せずに、コードをより短く、より明確に、より効率的にすることです。ブール式を単純化し、リスト内包表記を使用し、計算の繰り返しを回避し、map() や filter() などの組み込み関数を活用し、条件を結合することにより、コードを DRY にすることができます。 lambda を使用すると、小さな関数を 1 行で定義でき、コードをすっきりと高速に保つことができます。これらの実践により、パフォーマンスが向上するだけでなく、長期的にコードを維持するために重要な可読性も向上します。
さらに読む:
https://www.w3schools.com/python/python_lambda.asp
https://www.w3schools.com/python/ref_func_filter.asp
https://www.w3schools.com/python/ref_func_map.asp
以上が初心者向けの Python での ommon リファクタリングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。