Maison >développement back-end >Tutoriel Python >Hacks Python avancés ou
Python est un langage polyvalent et puissant, et la maîtrise de ses fonctionnalités avancées peut améliorer considérablement l'efficacité et la lisibilité de votre codage. Voici quelques conseils Python avancés pour vous aider à écrire un code meilleur, plus propre et plus efficace.
J'ai écrit 2 petits livres à lire ce week-end qui couvrent python, voici les liens : (1) https://leanpub.com/learnpython_inweekend_pt1 & (2) https://leanpub.com/learnpython_inweekend_pt2
Les compréhensions de listes offrent un moyen concis de créer des listes. Ils peuvent souvent remplacer les boucles for et les instructions conditionnelles traditionnelles, ce qui donne un code plus propre et plus lisible.
# 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]
Les expressions génératrices vous permettent de créer des itérateurs de manière concise sans stocker la séquence entière en mémoire, ce qui les rend plus efficaces en mémoire.
# 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)
Lors d'une itération sur un itérable et de la nécessité de suivre l'index de chaque élément, la fonction enumerate() est inestimable.
fruits = ['apple', 'banana', 'cherry'] for index, fruit in enumerate(fruits): print(f"Index: {index}, Fruit: {fruit}")
Utiliser la méthode join() pour concaténer des chaînes est plus efficace que d'utiliser l'opérateur +, en particulier pour les grandes chaînes.
fruits = ['apple', 'banana', 'cherry'] fruit_string = ', '.join(fruits) print(fruit_string) # Output: apple, banana, cherry
Par défaut, Python stocke les attributs d'instance dans un dictionnaire, ce qui peut consommer une mémoire importante. L'utilisation de __slots__ peut réduire l'utilisation de la mémoire en allouant de la mémoire pour un ensemble fixe de variables d'instance.
class Point: __slots__ = ['x', 'y'] def __init__(self, x, y): self.x = x self.y = y
Le gestionnaire de contexte contextlib.suppress vous permet d'ignorer des exceptions spécifiques, simplifiant ainsi votre code en évitant les blocs try-sauf inutiles.
from contextlib import suppress with suppress(FileNotFoundError): with open('file.txt', 'r') as file: contents = file.read()
Le module itertools propose un ensemble de fonctions efficaces pour travailler avec des itérateurs. Des fonctions telles que le produit, les permutations et les combinaisons peuvent simplifier des opérations complexes.
import itertools # Calculate all products of an input print(list(itertools.product('abc', repeat=2))) # Calculate all permutations print(list(itertools.permutations('abc')))
Le décorateur functools.lru_cache peut mettre en cache les résultats d'appels de fonctions coûteux, améliorant ainsi les performances.
from functools import lru_cache @lru_cache(maxsize=32) def fibonacci(n): if n < 2: return n return fibonacci(n-1) + fibonacci(n-2)
Les décorateurs sont un outil puissant pour modifier le comportement des fonctions ou des classes. Ils peuvent être utilisés pour la journalisation, le contrôle d'accès et bien plus encore.
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()
La construction for-else en Python vous permet d'exécuter un bloc else une fois qu'une boucle for se termine normalement (c'est-à-dire sans rencontrer d'instruction break). Cela peut être particulièrement utile dans les opérations de recherche.
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")
En incorporant ces conseils Python avancés dans votre flux de travail de développement, vous pouvez écrire un code plus efficace, plus lisible et plus maintenable.
Que vous optimisiez l'utilisation de la mémoire avec __slots__, simplifiiez les opérations sur les chaînes avec join() ou exploitiez la puissance du module itertools, ces techniques peuvent améliorer considérablement vos compétences en programmation Python.
Continuez à explorer et à mettre en pratique ces concepts pour garder une longueur d'avance dans votre parcours Python.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!