4 votes

Quelle est la signification de "if False : from typing import Type" ?

En passant en revue code src pytest Je trouve cette déclaration étrange, quelqu'un peut-il l'expliquer ?

if False:  # TYPE_CHECKING
    from typing import Type

Je suis en train de regarder PEP 526 actuellement, et je pense que cela peut être lié d'une manière ou d'une autre aux annotations, mais je ne sais pas exactement comment. Est-il possible que quelqu'un annote False de manière à ce qu'il soit évalué à True ?

Après un rapide coup d'œil dans le en tapant src, j'ai trouvé ça :

# Constant that's True when type checking, but False here.
TYPE_CHECKING = False

Donc, d'après ce que j'ai compris jusqu'ici, @chepner a raison. Cette déclaration est évaluée à True lors de l'exécution d'un contrôle de type, et ensuite l'importation réelle est probablement nécessaire. Bien que cela semble toujours très bizarre à mes yeux ( #if DBG en C était beaucoup plus clair)

1voto

askaroni Points 753
if False: 
    ...

était une ancienne façon d'écrire ce qui est maintenant (depuis Python 3.5.2) fait avec

from typing import TYPE_CHECKING

if TYPE_CHECKING: 
    ...

TYPE_CHECKING es

Une constante spéciale qui est supposée être True par type statique tiers de tiers. Il est False au moment de l'exécution.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X