web-dev-qa-db-fra.com

Affectation avec "ou" in python

Est-il considéré comme un mauvais style d'affecter des valeurs aux variables comme celle-ci?

x = "foobar" or None
y = some_variable or None

Dans l'exemple ci-dessus, x obtient la valeur "foobar".

36
TheOne

Non, c'est une pratique courante. C'est seulement considéré comme un mauvais style pour les expressions considérablement plus longues que la vôtre.

24
tback

Le danger principal de faire quelque chose comme ceci est la possibilité que (dans le second cas) some_variable est faux mais pas aucun (l'entier 0, par exemple) et vous ne voulez pas vous retrouver avec y égal à aucun dans ce cas.

15
Free Monica Cellio

Je me sens aussi un peu de discortable en utilisant ce genre d'expressions. Dans l'apprentissage Python 4ED, il s'appelle un "comportement quelque peu inhabituel". Plus tard, Mark Lutz dit:

... Il s'avère être un paradigme codant assez courant en Python: pour sélectionner un objet non impétueux parmi un ensemble de taille fixe, il suffit de les décharger ensemble dans une expression ou une expression. Dans une forme plus simple, cela est également couramment utilisé pour désigner une valeur par défaut ...

En fait, ils produisent des expressions d'une ligne concises qui aident à éliminer le bruit de la ligne du code.
[.____] Ce comportement est la base d'une forme de l'opérateur ternaire if/autre:

A = Y if X else Z
4
joaquin