parenthèses dans les conditions Python
J'ai une simple question concernant l'utilisation des parenthèses dans Python instructions conditionnelles.
La suite, deux extraits fonctionne exactement de la même façon, mais je me demande si cela est vrai seulement en raison de sa simplicité;
>>> import os, socket
>>> if ((socket.gethostname() == "bristle") or (socket.gethostname() == "rete")):
... DEBUG = False
... else:
... DEBUG = True
...
>>> DEBUG
et maintenant, sans parenthèses
>>> import os, socket
>>> if socket.gethostname() == "bristle" or socket.gethostname() == "rete":
... DEBUG = False
... else:
... DEBUG = True
...
>>> DEBUG
Quelqu'un pourrait-il m'éclairer sur ce point? Y a des cas où je devrais certainement les utiliser?
source d'informationauteur Flowpoke
Vous devez vous connecter pour publier un commentaire.
Autres réponses que la Comparaison a lieu avant les Booléens sont 100% correct. Comme une alternative (pour les situations comme vous l'avez démontré), vous pouvez également l'utiliser comme un moyen de combiner les conditions:
Qui vous permet d'économiser les appels distincts à douille.gethostname et rend plus facile d'ajouter des possibilités de valeurs valides que votre projet se développe ou si vous avez d'autoriser des hôtes supplémentaires.
Les parenthèses sont redondants dans ce cas. La comparaison a une priorité plus élevée que les opérateurs Booléens, de sorte que les comparaisons sera toujours effectuée quelle que soit l'parenthèses.
Cela dit, une directive j'ai vu une fois (peut-être dans Pratique de la Programmation en C) a dit quelque chose comme ceci:
(Oui, IIRC ils ont quitté l'exponentiation!)
L'idée étant que les règles de priorité sont des arcanes assez que personne ne devrait s'attendre à les rappeler tous, ni l'original programmeur ni à l'entretien programmeur de la lecture du code, c'est mieux pour le rendre explicite. Essentiellement les parenthèses servent à la fois de communiquer l'intention de le compilateur et de la documentation pour la prochaine schmoe qui a travailler sur.
Je crois en Python ces deux déclarations va générer le même bytecode de sorte que vous n'êtes même pas perdre toute efficacité.
La parenthèse juste la force d'un ordre des opérations. Si vous aviez un élément supplémentaire dans votre conditionnelle, comme un "et", il serait conseillé d'utiliser des parenthèses pour indiquer qui " ou " que " et " jumelé avec.
À différencier de
En Python et beaucoup d'autres langages de programmation, les parenthèses ne sont pas nécessaires pour chaque expression avec plusieurs opérateurs. C'est parce que les opérateurs ont une priorité. Voir le tableau ici (Section 5.15) pour plus d'informations sur la priorité de l'opérateur en Python.
Vous pouvez établir une analogie à l'arithmétique. Ces expressions sont équivalentes:
Si tu veux ajouter des trois premiers, alors vous devez utiliser des parenthèses comme ceci:
Ont un coup d'oeil à le manuel. Le plus vous êtes dans la liste, l'opérateur sera appliqué plus tard. "ou" est "==" , et donc, dans ce cas particulier, les réponses sont les mêmes. Cependant, pour des raisons de lisibilité, et juste pour être sûr, je vous recommande la parenthèse.