Désactiver les assertions en Python
Comment puis-je désactiver les assertions en Python?
Qui est, si une assertion échoue, je n'en veux pas à jeter un AssertionError
, mais de continuer.
Comment dois-je faire?
Vous devez vous connecter pour publier un commentaire.
Il existe de multiples approches qui touchent un seul processus, de l'environnement, ou d'une seule ligne de code.
Je viens de le démontrer chaque.
Pour l'ensemble du processus
À l'aide de la
-O
drapeau (capital O) désactive toutes les affirmer états d'un processus.Par exemple:
Noter que par désactiver je veux dire, elle n'a pas d'exécuter l'expression qui suit:
Pour l'environnement
Vous pouvez utiliser une variable d'environnement pour définir ce drapeau.
Cela va affecter tous les processus qui utilise ou hérite de l'environnement.
E. g., dans Windows, la configuration et la désactivation de la variable d'environnement:
Même dans Unix (à l'aide de set et unset pour les différentes fonctionnalités)
Seul point dans le code
Vous continuez votre question:
Si vous voulez le code qui ne peut pas être exercé, vous pouvez vous rattraper une erreur d'assertion:
qui imprime:
et vous tiendrez le coup de le point vous avez manipulé la
AssertionError
.Références
De le
valoir
de la documentation:Une instruction assert comme ceci:
Est équivalent à
Et,
De l'utilisation docs:
et
Appel Python avec l'option-O indicateur:
test.py:
De sortie:
Les deux les deux réponses déjà données sont valides (appel Python avec soit
-O
ou-OO
sur la ligne de commande).Ici est la différence entre eux:
-O
Tour sur la base des optimisations. Cela modifie l'extension de nom de fichierpour compilé en bytecode) des fichiers .pyc pour .pyo.
-OO
Jeter docstrings en outre à la-O
optimisations.(À partir de la La documentation Python)
Utilisation
python -O
:Vous devriez PAS désactiver (la plupart) des assertions. Ils attrapent les erreurs inattendues lorsque l'attention est ailleurs. Voir la Règle 5 dans "La puissance de dix".
Au lieu de cela, la garde certains cher assertion vérifie par quelque chose comme:
Une façon de garder les affirmations importantes, et de permettre
assert
déclarations d'être optimisé est loin, en les élevant à l'intérieur d'une instruction de sélection:Cours d'exécution en mode optimisé devrait le faire: