


Demandez pardon, pas la permission : quand ce style de programmation est-il approprié ?
"Demander le pardon et non la permission" en programmation
L'expression "demander pardon et non la permission" est souvent utilisée pour décrire un style de programmation qui favorise la simplicité et la robustesse plutôt que l'exactitude. Ce style est basé sur l'idée qu'il est préférable de détecter les exceptions et de les gérer avec élégance plutôt que d'essayer d'anticiper chaque échec possible et d'écrire du code pour l'empêcher.
Demander la permission ou demander pardon.
Dans le style "demander la permission", le code est écrit de manière à vérifier les conditions susceptibles de provoquer une exception avant d'effectuer toute action pouvant entraîner une erreur. exception. Par exemple :
if os.path.exists(filename): with open(filename) as f: data = f.read() else: raise FileNotFoundError(f"File {filename} not found.")
Dans le style "demander pardon", le code est écrit pour simplement essayer d'effectuer l'action et détecter toutes les exceptions qui peuvent survenir :
try: with open(filename) as f: data = f.read() except FileNotFoundError: print(f"File {filename} not found.")
Pourquoi « Demander pardon » est préféré
Il y a deux raisons principales pour lesquelles le style « demander pardon » est généralement préféré au style « demander pardon » Style "demander la permission":
1. Problèmes de concurrence :
Dans un environnement concurrent, tel qu'un programme multithread ou un programme qui interagit avec des ressources externes, l'état du système peut changer entre le moment où une vérification d'autorisation est effectuée et le moment où lorsque l'action est réalisée. Cela peut conduire à des résultats incorrects ou à des exceptions inutilement levées.
2. Vérifications d'autorisation trop restrictives :
Les vérifications d'autorisation peuvent être trop restrictives, empêchant le code d'effectuer des actions réellement possibles. Par exemple, la vérification de l'existence d'un fichier avant de l'ouvrir peut échouer si le fichier est créé après la vérification mais avant l'opération d'ouverture.
Quand utiliser « Demander pardon »
Le style « demander pardon » est approprié lorsque :
- L'opération est susceptible d'échouer de manière prévisible et récupérable. façons.
- Le coût de la vérification de l'autorisation est élevé.
- Le contrôle de l'autorisation peut changer entre l'heure du contrôle et l'heure de l'opération.
Exemple
L'exemple fourni dans la question démontre une utilisation appropriée du style « demander pardon ». La vérification de la présence de l'attribut bar avant d'y accéder peut échouer si l'attribut est défini ultérieurement. Au lieu de cela, le code doit simplement essayer d'accéder à l'attribut et intercepter toute exception AttributeError qui peut survenir.
Il est important de noter que le style « demander pardon » ne signifie pas que les codeurs doivent être négligents ou écrire du code qui est sujette à des exceptions. Cela suggère plutôt qu'il est préférable de gérer les exceptions avec élégance plutôt que d'essayer d'anticiper chaque échec possible.
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!

SlitingyPapyThonListIsDoneUsingTheSyntaxList [Démarrage: arrêt: étape] .He'showitworks: 1) startisheindexofthefirStelementoinclude.2) stopisTheIndexoftheFirstelementsoexclude.3) StepistheincrementBetweenselans.it'susefulfactingPortationSoListShsandCanusegeg

NumpyAllowsForvariousOperations ONARRAYS: 1) BasicarithmeticLikeaddition, Soustraction, Multiplication, anddivision; 2) AdvancedOperationSuchasmatrixMultiplication; 3) Element-Wiseoperations withoutExplicitloop

ArraySinpython, en particulier ThroughNumpyandPandas, aressentialfordataanalysis, offingspeeedAfficiency.1) numpyarrayablefficienthandlingoflargedatasetsandComplexOperationsLikEMoVingAverages.2)

ListsandNumpyArraysInpythonHaveDidifferentMemoryfootprints: listsaRemoreFlexibles Butlessmemory économe, tandis que la liste de résensés est-ce qui

ToenSurepythonscriptsBeHavecorrectlyAcrossDevelopment, mise en scène et production, catégories de type: 1) EnvironmentVariblesForsImplesettings, 2) ConfigurationFilesForComplexsetups et3) dynamicloadingforadaptability.eachMethodoffersNebeneFitsAndreCeresca

La syntaxe de base pour le découpage de la liste Python est la liste [Démarrage: arrêt: étape]. 1.Start est le premier index d'élément inclus, 2.STOP est le premier indice d'élément exclu et 3.StEP détermine la taille de l'étape entre les éléments. Les tranches sont non seulement utilisées pour extraire les données, mais aussi pour modifier et inverser les listes.

ListesoutPerformarRaySin: 1) dynamicingizingandfrequentinSertions / Deletions, 2) StoringheteroGeneousData, and3) MemoryEfficiencyForsparsedata, butmayhaveslightperformanceCostSincertorations.

Toconvertapythonarraytoalist, usethelist () Constructororageneratorexpression.1) ImportTheArrayModuleandCreateArray.2) Uselist (Arr) ou [Xforxinarr] à Convertittoalist, considérant la performance et le domaine de l'émie-efficacité pour les étages.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Listes Sec
SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Dreamweaver Mac
Outils de développement Web visuel
