Je voudrais faire quelque chose comme:Qu'est-ce que Python équivaut à ou équivaut à expression, pour obtenir le retour de foo ou foo = 'bar' fonctionnant?
def get_foo():
return self._foo or self._foo = Bar()
Je cherche la manière la plus propre de le faire. Est-ce possible avec ou égal?
Mes tentatives ont échoué:
>>> foo = None
>>> foo or 'bar'
'bar'
>>> foo
>>> foo or foo = 'bar'
File "<stdin>", line 1
SyntaxError: can't assign to operator
>>> foo or (foo = 'bar')
File "<stdin>", line 1
foo or (foo = 'bar')
^
SyntaxError: invalid syntax
Qu'est-ce qui est le plus rapide? Dans le premier cas, python est-il assez intelligent pour ne pas effectuer l'opération d'affectation si la valeur est définie? –
Oui. Il n'y a pratiquement rien dedans. – katrielalex
@WooYek: Si vous vous inquiétez autant de la performance, alors soit cette méthode devrait être éliminée complètement et aller pour les membres statiques initialisés, soit Python peut ne pas être le langage que vous recherchez. En général, l'écrire comme vous le voulez (le court chemin) est mauvais parce que c'est illisible et conduit à un code non maintenu. – Ivo