other = s or "some default value"
Ok, il convient de préciser comment l' or
opérateur fonctionne. C'est un opérateur booléen, de sorte qu'il fonctionne dans un contexte booléen. Si les valeurs ne sont pas boolean, ils sont convertis en booléen pour l'application de l'opérateur.
Notez que l' or
opérateur ne renvoie pas seulement True
ou False
, au lieu de cela, elle renvoie le premier opérande qui n'a pas la valeur false.
Dans ce cas, l'expression x or y
retours x
si il est True
ou évalue à true lors de la conversion en booléen. Sinon, elle renvoie y
. Pour la plupart des cas, ce sera pour le même but de C♯'null-coalescence de l'opérateur, mais gardez à l'esprit:
42 or "something" # returns 42
0 or "something" # returns "something"
None or "something" # returns "something"
False or "something" # returns "something"
"" or "something" # returns "something"
Si vous utilisez votre variable s
pour tenir quelque chose qui est soit une référence à l'instance d'une classe ou d' None
(tant que votre classe ne définit pas les membres de l' __nonzero__()
et __len__()
), il est sûr à utiliser la même sémantique que le null-coalescence de l'opérateur.
En fait, il peut même être utile d'avoir ce côté-effet de Python. Puisque vous savez quelles sont les valeurs que prend la valeur false, vous pouvez l'utiliser pour déclencher la valeur par défaut sans l'aide d' None
(un objet d'erreur, par exemple).