144 votes

python ? (conditionnel/ternaire) de l'opérateur pour les affectations

C et de nombreuses autres langues ont un conditionnel (aka ternaire) de l'opérateur. Cela vous permet de vous rendre très laconique choix entre deux valeurs fondées sur la vérité de la condition, ce qui rend les expressions, y compris les affectations, très concis.

Je rate ce parce que je trouve que mon code a beaucoup de conditionnel attributions de prendre quatre lignes en Python:

if condition:
    var = something
else:
    var = something_else

Alors qu'en C, ça serait:

var = condition? something: something_else;

Une ou deux fois dans un fichier est bien, mais si vous avez beaucoup de conditionnel affectations le nombre de lignes exploser et, le pire de tous, l'œil est attiré vers eux.

J'aime la concision de l'opérateur conditionnel, car il garde les choses que je juge de l'onu-stratégique de me distraire lorsque vous consultez le code.

Donc, en Python, il y a des trucs que vous pouvez utiliser pour obtenir l'affectation sur une seule ligne, rapprochant les avantages de l'opérateur conditionnel comme je l'ai indiqué?

238voto

carl Points 25879

Python est un de ces opérateurs:

variable = something if condition else something_else

Sinon, bien que non recommandé (voir @karadoc commentaire):

variable = (condition and something) or something_else

21voto

Greg Hewgill Points 356191

Dans les anciens code Python, vous pouvez voir l'astuce:

condition and something or something_else

cependant, cela a été remplacée par la supériorité ... if ... else ... construire:

something if condition else something_else

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