Table des matières
Le comportement des instructions de match Python
Pourquoi ne pas lancer une exception?
Comment gérer les situations de décalage?
Description dans PEP 634
Résumer
Maison développement back-end Tutoriel Python Python Pattern Matching: Pourquoi les exceptions ne sont-elles pas lancées lorsqu'ils ne sont pas assortis?

Python Pattern Matching: Pourquoi les exceptions ne sont-elles pas lancées lorsqu'ils ne sont pas assortis?

Aug 23, 2025 pm 01:30 PM

Python Pattern Matching: Pourquoi les exceptions ne sont-elles pas lancées lorsqu'ils ne sont pas assortis?

L'instruction Match de Python fournit un puissant mécanisme de correspondance de motifs structurés, mais contrairement à certaines langues, lorsqu'aucune correspondance de modèle n'est réussie, elle ne lance pas d'exception, mais continue d'exécuter le code ultérieur. Cet article creusera les raisons de ce choix de conception et expliquera la logique derrière elle et comment gérer explicitement les situations de décalage en cas de besoin.

Le comportement des instructions de match Python

L'instruction Match de Python est utilisée pour comparer une valeur avec une série de modèles. Si un modèle de correspondance est trouvé, le bloc de code correspondant au modèle est exécuté. Cependant, si aucune correspondance de modèle n'est réussie, l'instruction Match ne lance pas d'exception comme Erlang, ou provoque une erreur de compilation comme la rouille. Au lieu de cela, il saute silencieusement tous les blocs de cas et continue d'exécuter le code après l'instruction Match.

 var = 3
faire correspondre var:
    Cas 1:
        imprimer ("correspond à 1")
    Cas 2:
        Imprimer ("correspondre à 2")

print ("Le programme continue d'exécuter")

Dans l'exemple ci-dessus, comme la valeur de VAR est 3, aucun cas ne correspond avec succès, le programme sortira directement "Le programme continue d'exécuter".

Pourquoi ne pas lancer une exception?

La philosophie de conception de Python a tendance à être "explicite sur implicite". Jeter une exception est un comportement implicite qui peut provoquer des interruptions inattendues du flux du programme. Le concepteur de la déclaration de match estime que les situations de décalage ne sont pas toujours erronées et font parfois partie de la logique du programme. Par conséquent, ils ont choisi de laisser explicitement le programmeur du programmeur, plutôt que de forcer l'exception à être lancée.

De plus, forcer une exception à être jetée peut rendre le code plus verbeux, car les programmeurs doivent ajouter un essai ... sauf bloquer à chaque instruction de match pour gérer les exceptions possibles.

Comment gérer les situations de décalage?

Bien que l'instruction MATCH elle-même ne lance pas d'exception, vous pouvez utiliser Wildcard Pattern_ pour capturer toutes les situations inégalées et effectuer des opérations correspondantes dans les blocs de code correspondants de ce modèle.

 def match_case (var = 3):
    faire correspondre var:
        Cas 1:
            retour 1
        Cas 2:
            retour 2
        cas _:
            Renvoie aucun # lancez une exception, soit exécuter un autre imprimé logique (match_case ()) # sortie Aucun

Wildcard Pattern_ est un modèle irréfutable, ce qui signifie qu'il correspondra toujours avec succès. Par conséquent, si tous les autres modèles ne correspondent pas, le bloc de code correspondant au modèle _ sera exécuté.

Vous pouvez choisir de lancer une exception en mode _ ou d'effectuer une autre logique, comme renvoyer une valeur par défaut ou enregistrer un message d'avertissement.

 def match_case (var = 3):
    faire correspondre var:
        Cas 1:
            retour 1
        Cas 2:
            retour 2
        cas _:
            augmenter ValueError ("Valeur variable inconnue")

essayer:
    print (match_case ())
sauf Value Enerror comme e:
    imprimer (f "Exception attrapée: {e}")

Description dans PEP 634

PEP 634 mentionne que s'il est syntaxiquement prouvé qu'un modèle réussira toujours, le modèle est considéré comme irréfutable. Le mode de capture et le mode générique sont irréfutables.

Le PEP 634 n'impose pas que le motif générique doit être inclus, mais que s'il contient un modèle de jogne, il ne manquera jamais de correspondre.

Résumer

Les instructions de match de Python ne lancent pas des exceptions lorsqu'aucune correspondance de modèle ne réussit, pour la philosophie de conception, et sont conçues pour permettre aux programmeurs de gérer explicitement les situations de décalage. Vous pouvez utiliser Wildcard Pattern_ pour capturer toutes les situations inégalées et effectuer des opérations correspondantes dans les blocs de code correspondants du modèle, tels que lancer une exception, renvoyer une valeur par défaut ou enregistrer un message d'avertissement. Cette méthode de conception rend le code plus flexible et évite la manipulation des exceptions inutile.

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 de ce site Web
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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Sujets chauds

Comment installer des packages à partir d'un fichier exigence.txt dans Python Comment installer des packages à partir d'un fichier exigence.txt dans Python Sep 18, 2025 am 04:24 AM

Exécutez pipinstall-rrequirements.txt pour installer le package de dépendance. Il est recommandé de créer et d'activer l'environnement virtuel d'abord pour éviter les conflits, s'assurer que le chemin du fichier est correct et que le PIP a été mis à jour et utiliser des options telles que --No-Deps ou --User pour ajuster le comportement d'installation si nécessaire.

Stratégie de fusion efficace de l'adaptateur et du modèle de base PEFT LORA Stratégie de fusion efficace de l'adaptateur et du modèle de base PEFT LORA Sep 19, 2025 pm 05:12 PM

Ce tutoriel détaille comment fusionner efficacement l'adaptateur PEFT LORA avec le modèle de base pour générer un modèle complètement indépendant. L'article souligne qu'il est faux d'utiliser directement Transformers.Automodel pour charger l'adaptateur et fusionner manuellement les poids, et fournit le processus correct pour utiliser la méthode Merge_and_unload dans la bibliothèque PEFT. De plus, le tutoriel souligne également l'importance de traiter les segments de mots et discute des problèmes et des solutions de compatibilité des versions de PEFT.

Comment tester le code Python avec Pytest Comment tester le code Python avec Pytest Sep 20, 2025 am 12:35 AM

Python est un outil de test simple et puissant dans Python. Après l'installation, les fichiers de test sont automatiquement découverts en fonction des règles de dénomination. Écrivez une fonction commençant par test_ pour les tests d'assurance, utilisez @ pytest.fixture pour créer des données de test réutilisables, vérifiez les exceptions via PyTest.Rais, prend en charge l'exécution de tests spécifiés et plusieurs options de ligne de commande et améliore l'efficacité des tests.

Comment gérer les arguments de ligne de commande dans Python Comment gérer les arguments de ligne de commande dans Python Sep 21, 2025 am 03:49 AM

TheargParsemoduleisthereComMendwaytoHandleCommand-lineargumentsInpython, fournissantRobustParsing, Typevalidation, HelpMessages, AnderrorHling; usys.argvforsimplécasesrequiringminimalsepup.

Problème de précision du nombre de points flottants dans Python et son schéma de calcul de haute précision Problème de précision du nombre de points flottants dans Python et son schéma de calcul de haute précision Sep 19, 2025 pm 05:57 PM

Cet article vise à explorer le problème commun de la précision de calcul insuffisante des nombres de points flottants dans Python et Numpy, et explique que sa cause profonde réside dans la limitation de représentation des nombres de points flottants 64 bits standard. Pour les scénarios informatiques qui nécessitent une précision plus élevée, l'article introduira et comparera les méthodes d'utilisation, les fonctionnalités et les scénarios applicables de bibliothèques mathématiques de haute précision telles que MPMATH, SYMPY et GMPY pour aider les lecteurs à choisir les bons outils pour résoudre les besoins de précision complexe.

Comment travailler avec les fichiers PDF dans Python Comment travailler avec les fichiers PDF dans Python Sep 20, 2025 am 04:44 AM

PYPDF2, PDFPLUMBER et FPDF sont les bibliothèques de base pour Python pour traiter PDF. Utilisez le PYPDF2 pour effectuer l'extraction de texte, la fusion, la division et le chiffrement, tels que la lecture de la page via Pdfreader et l'appel extract_text () pour obtenir du contenu; PDFPLUMBER convient plus pour conserver l'extraction de texte de mise en page et la reconnaissance de la table, et prend en charge extract_tables () pour capturer avec précision les données de table; FPDF (FPDF2 recommandé) est utilisé pour générer du PDF, et les documents sont construits et sorties via add_page (), set_font () et cellule (). Lors de la fusion des PDF

Python Obtenez l'exemple de l'heure actuelle Python Obtenez l'exemple de l'heure actuelle Sep 15, 2025 am 02:32 AM

L'obtention de l'heure actuelle peut être implémentée dans Python via le module DateTime. 1. Utilisez dateTime.now () pour obtenir l'heure actuelle locale, 2. Utilisez le strftime ("% y-% m-% d% h:% m:% s") pour formater l'année de sortie, le mois, le jour, l'heure, la minute et la seconde, 3. UTCNow () et les opérations quotidiennes peuvent répondre aux besoins en combinant DateTime.now () avec des chaînes formatées.

Comment pouvez-vous créer un gestionnaire de contexte en utilisant le décorateur @contextManager dans Python? Comment pouvez-vous créer un gestionnaire de contexte en utilisant le décorateur @contextManager dans Python? Sep 20, 2025 am 04:50 AM

Importer @ contextManagerfromContextLibandDeFineAgeneratorFonctionnement toTyieldSexactlyOnce, où les actes de championnalsAnterAndCodeLifteryiel

See all articles