ホームページ > バックエンド開発 > Python チュートリアル > 初心者向けの Python での ommon リファクタリング

初心者向けの Python での ommon リファクタリング

Patricia Arquette
リリース: 2024-12-17 17:42:22
オリジナル
130 人が閲覧しました

ommon Refactors in Python for Beginners

リファクタリングは、コードをよりクリーンかつ効率的にするのに役立ちます。ここでは、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 サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート