68 votes

Python : attribuer une valeur si aucune n'existe

Je suis un programmeur RoR nouveau sur Python. J'essaie de trouver la syntaxe qui me permettra de définir une variable sur une valeur spécifique uniquement si elle n'a pas été affectée auparavant. En gros je veux :

 # only if var1 has not been previously assigned

var1 = 4

47voto

ubadub Points 2138
var1 = var1 or 4

Le seul problème que cela pourrait avoir est que si var1 est une valeur fausse, comme False ou 0 ou [], il choisira 4 à la place. Cela pourrait être un problème.

25voto

l__flex__l Points 540

Je viens aussi de Ruby donc j'adore la syntaxe foo ||= 7 .

C'est la chose la plus proche que je peux trouver.

 foo = foo if 'foo' in vars() else 7

J'ai vu des gens faire ça pour un dict :

 try:
    foo['bar']
except KeyError:
    foo['bar'] = 7

Mise à jour : Cependant, j'ai récemment trouvé ce petit bijou:

 foo['bar'] = foo.get('bar', 7)

Si vous aimez cela, alors pour une variable régulière, vous pouvez faire quelque chose comme ceci :

 vars()['foo'] = vars().get('foo', 7)

16voto

DeepBlue Points 280

Voici le moyen le plus simple que j'utilise, j'espère que cela fonctionnera pour vous,

var1 = var1 or 4

Cela affecte 4 à var1 uniquement si var1 est None , False ou 0

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