Maison >développement back-end >Tutoriel Python >Devriez-vous « demander pardon, pas la permission » dans votre code Python ?

Devriez-vous « demander pardon, pas la permission » dans votre code Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-10 11:07:16951parcourir

Should You

La philosophie derrière « Demander le pardon et non la permission »

L'expression « demander pardon et non la permission » est souvent utilisée dans le codage pour décrire une programmation. style qui donne la priorité à l'exécution des opérations plutôt que de vérifier les autorisations au préalable.

Dans le code Pythonic, ce principe suggère qu'au lieu de en utilisant des instructions conditionnelles pour vérifier l'existence d'attributs ou la validité des opérations, il est plus efficace de tenter l'opération et de gérer les exceptions qui en résultent.

Exemple de scénario et approche « Demander pardon »

Considérez une classe avec une barre d'attributs facultative. En programmation traditionnelle, on peut vérifier si l'attribut existe avant de l'utiliser :

if foo.bar:
    # Do stuff

Cependant, l'approche "demander pardon" conseille :

try:
    foo.bar  # Attempt to access the attribute
    # Do stuff    
except AttributeError:
    # Handle the error if the attribute doesn't exist

Arguments pour "Demander pardon" Pardon"

  • Concurrence : Dans Dans des environnements multithread ou lors de la manipulation de ressources externes, l'état du système peut changer entre la vérification des autorisations et l'opération.
  • Précision : Définir des vérifications d'autorisation spécifiques peut être difficile, conduisant soit à des faux positifs ou des faux négatifs.

Exceptions pour les attributs facultatifs

Dans Dans le cas des attributs facultatifs, l'approche pythonique acceptée consiste à initialiser l'attribut à Aucun et à vérifier explicitement son existence :

if foo.bar is not None:
    # Handle the optional part
else:
    # Default handling

Cela garantit que le code est clair et que l'intention de gérer les attributs facultatifs est 明确的.

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