Python は多用途で強力な言語であり、その高度な機能を習得すると、コーディングの効率と読みやすさを大幅に向上させることができます。ここでは、より適切で、よりクリーンで、より効率的なコードを作成するのに役立つ、Python の高度なヒントをいくつか紹介します。
私は Python について説明した、週末に読むための 2 冊の小さな本を書きました。リンクは次のとおりです: (1) https://leanpub.com/learnpython_inweekend_pt1 & (2) https://leanpub.com/learnpython_inweekend_pt2
リスト内包表記は、リストを作成する簡潔な方法を提供します。多くの場合、従来の for ループや条件文を置き換えることができ、コードがよりクリーンで読みやすくなります。
# Traditional approach numbers = [1, 2, 3, 4, 5] squared_numbers = [] for num in numbers: squared_numbers.append(num ** 2) # Using list comprehension squared_numbers = [num ** 2 for num in numbers]
ジェネレーター式を使用すると、シーケンス全体をメモリに保存せずに簡潔な方法でイテレータを作成できるため、メモリ効率が向上します。
# List comprehension (creates a list) squared_numbers = [num ** 2 for num in numbers] # Generator expression (creates an iterator) squared_numbers = (num ** 2 for num in numbers)
反復可能オブジェクトを反復処理し、各要素のインデックスを追跡する必要がある場合、enumerate() 関数は非常に役立ちます。
fruits = ['apple', 'banana', 'cherry'] for index, fruit in enumerate(fruits): print(f"Index: {index}, Fruit: {fruit}")
文字列を連結するには、特に大きな文字列の場合、演算子を使用するよりも join() メソッドを使用する方が効率的です。
fruits = ['apple', 'banana', 'cherry'] fruit_string = ', '.join(fruits) print(fruit_string) # Output: apple, banana, cherry
デフォルトでは、Python はインスタンス属性を辞書に保存するため、大量のメモリを消費する可能性があります。 __slots__ を使用すると、インスタンス変数の固定セットにメモリを割り当てることでメモリ使用量を削減できます。
class Point: __slots__ = ['x', 'y'] def __init__(self, x, y): self.x = x self.y = y
contextlib.suppress コンテキスト マネージャーを使用すると、特定の例外を無視でき、不必要な try-excel ブロックを回避してコードを簡素化できます。
from contextlib import suppress with suppress(FileNotFoundError): with open('file.txt', 'r') as file: contents = file.read()
itertools モジュールは、反復子を操作するための効率的な関数のコレクションを提供します。積、順列、組み合わせなどの関数を使用すると、複雑な演算を簡素化できます。
import itertools # Calculate all products of an input print(list(itertools.product('abc', repeat=2))) # Calculate all permutations print(list(itertools.permutations('abc')))
functools.lru_cache デコレータは、負荷の高い関数呼び出しの結果をキャッシュし、パフォーマンスを向上させることができます。
from functools import lru_cache @lru_cache(maxsize=32) def fibonacci(n): if n9. よりクリーンなコードのためのマスター デコレータ
デコレータは、関数またはクラスの動作を変更するための強力なツールです。これらは、ロギング、アクセス制御などに使用できます。
def my_decorator(func): def wrapper(): print("Something is happening before the function is called.") func() print("Something is happening after the function is called.") return wrapper @my_decorator def say_hello(): print("Hello!") say_hello()10.For-Else トリックを使用する
Python の for-else 構造を使用すると、for ループが正常に完了した後 (つまり、break ステートメントに遭遇することなく) else ブロックを実行できます。これは、検索操作で特に役立ちます。
for n in range(2, 10): for x in range(2, n): if n % x == 0: print(f"{n} equals {x} * {n//x}") break else: # Loop fell through without finding a factor print(f"{n} is a prime number")
結論
これらの高度な Python ヒントを開発ワークフローに組み込むことで、より効率的で読みやすく、保守しやすいコードを作成できます。
__slots__ を使用してメモリ使用量を最適化する場合でも、join() を使用して文字列操作を簡素化する場合でも、itertools モジュールの機能を活用する場合でも、これらのテクニックを使用すると、Python プログラミング スキルを大幅に向上させることができます。
これらの概念を探索し、実践し続けて、Python の旅を前進させてください。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3