Python ist eine vielseitige und leistungsstarke Sprache, und die Beherrschung ihrer erweiterten Funktionen kann Ihre Codierungseffizienz und Lesbarkeit erheblich verbessern. Hier sind einige fortgeschrittene Python-Tipps, die Ihnen helfen, besseren, saubereren und effizienteren Code zu schreiben.
Ich habe am Wochenende zwei kleine Bücher zum Thema Python geschrieben, hier sind die Links: (1) https://leanpub.com/learnpython_inweekend_pt1 & (2) https://leanpub.com/learnpython_inweekend_pt2
Listenverständnisse bieten eine übersichtliche Möglichkeit, Listen zu erstellen. Sie können häufig herkömmliche For-Schleifen und bedingte Anweisungen ersetzen, was zu saubererem und besser lesbarem Code führt.
# 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]
Mit Generatorausdrücken können Sie Iteratoren auf prägnante Weise erstellen, ohne die gesamte Sequenz im Speicher zu speichern, wodurch sie speichereffizienter werden.
# 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)
Wenn Sie über eine Iteration iterieren und den Index jedes Elements verfolgen müssen, ist die Funktion enumerate() von unschätzbarem Wert.
fruits = ['apple', 'banana', 'cherry'] for index, fruit in enumerate(fruits): print(f"Index: {index}, Fruit: {fruit}")
Die Verwendung der Methode „join()“ zum Verketten von Zeichenfolgen ist effizienter als die Verwendung des Operators, insbesondere bei großen Zeichenfolgen.
fruits = ['apple', 'banana', 'cherry'] fruit_string = ', '.join(fruits) print(fruit_string) # Output: apple, banana, cherry
Standardmäßig speichert Python Instanzattribute in einem Wörterbuch, was erheblichen Speicher verbrauchen kann. Durch die Verwendung von __slots__ kann die Speichernutzung reduziert werden, indem Speicher für einen festen Satz von Instanzvariablen zugewiesen wird.
class Point: __slots__ = ['x', 'y'] def __init__(self, x, y): self.x = x self.y = y
Mit dem Kontextmanager contextlib.suppress können Sie bestimmte Ausnahmen ignorieren und so Ihren Code vereinfachen, indem unnötige Try-Exception-Blöcke vermieden werden.
from contextlib import suppress with suppress(FileNotFoundError): with open('file.txt', 'r') as file: contents = file.read()
Das itertools-Modul bietet eine Sammlung effizienter Funktionen für die Arbeit mit Iteratoren. Funktionen wie Produkt, Permutationen und Kombinationen können komplexe Operationen vereinfachen.
import itertools # Calculate all products of an input print(list(itertools.product('abc', repeat=2))) # Calculate all permutations print(list(itertools.permutations('abc')))
Der Dekorator functools.lru_cache kann die Ergebnisse teurer Funktionsaufrufe zwischenspeichern und so die Leistung verbessern.
from functools import lru_cache @lru_cache(maxsize=32) def fibonacci(n): if n9. Meisterdekorateure für Cleaner Code
Dekoratoren sind ein leistungsstarkes Werkzeug zum Ändern des Verhaltens von Funktionen oder Klassen. Sie können zur Protokollierung, Zugriffskontrolle und mehr verwendet werden.
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. Verwenden Sie den For-Else-Trick
Mit dem for-else-Konstrukt in Python können Sie einen else-Block ausführen, nachdem eine for-Schleife normal abgeschlossen wurde (d. h. ohne auf eine break-Anweisung zu stoßen). Dies kann besonders bei Suchvorgängen nützlich sein.
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")
Abschluss
Durch die Integration dieser erweiterten Python-Tipps in Ihren Entwicklungsworkflow können Sie effizienteren, lesbareren und wartbareren Code schreiben.
Ob Sie die Speichernutzung mit __slots__ optimieren, String-Operationen mit join() vereinfachen oder die Leistungsfähigkeit des itertools-Moduls nutzen, diese Techniken können Ihre Python-Programmierkenntnisse erheblich verbessern.
Erforschen und üben Sie diese Konzepte weiter, um auf Ihrer Python-Reise die Nase vorn zu haben.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3