Maison  >  Article  >  développement back-end  >  Hacks Python avancés ou

Hacks Python avancés ou

王林
王林original
2024-07-24 09:26:41787parcourir

Advanced Python Hacks 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


1. Utilisez les compréhensions de liste pour un code concis

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]

2. Tirez parti des expressions du générateur pour l’efficacité de la mémoire

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)

3. Utilisez enumerate() pour le suivi des index

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}")

4. Simplifiez la concaténation de chaînes avec join()

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

5. Utilisez __slots__ pour réduire l'utilisation de la mémoire

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

6. Utilisez contextlib.suppress pour ignorer les exceptions

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()

7. Utilisez le module itertools

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')))

8. Utilisez functools.lru_cache pour la mise en cache

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)

9. Maîtres décorateurs pour un code plus propre

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()

10. Utilisez l’astuce For-Else

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")

Conclusion

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn