Je me retrouve souvent à écrire if / elif / else construit en python, et je veux inclure des options qui peuvent se produire, mais pour lesquelles l'action correspondante est de ne rien faire. Je me rends compte que je pourrais simplement exclure ces instructions if, mais pour plus de lisibilité, je trouve qu'il est utile de les inclure toutes, de sorte que si vous regardez à travers le code, vous pouvez voir ce qui se passe à la suite de chaque option. Comment coder le no-op? Actuellement, je le fais comme ceci:
no_op = 0
if x == 0:
y = 2 * a
elif x == 1:
z = 3 * b
elif x == 3:
no_op
(Le code est en fait un peu plus long que cela, et plus compliqué. C'est juste pour illustrer la structure).
Je n'aime pas utiliser une variable comme un no-op, mais c'est la manière la plus soignée que je puisse imaginer. Y a-t-il un meilleur moyen?
...
) mérite également une mention: stackoverflow.com/a/6189281/38281Réponses:
Utilisez pass pour no-op:
Et voici un autre exemple:
Ou:
la source
doSQL = lambda *x:x
.else
?pass
n'est pas une valeur. Je ne vois pas non plus en quoi cela pourrait être utile.Et pourquoi pas
pass
?la source
Si vous avez besoin d'une fonction qui se comporte comme un nop, essayez
Parfois, je fais des choses comme ça quand je fais des dépendances facultatives:
la source
nop
dans un contexte qui nécessite spécifiquement une expression (par opposition à une instruction arbitraire; qv docs.python.org/3/reference/simple_stmts.html et docs.python.org/3/reference/compound_stmts. html ) - comme par exemple en tant que sous-expression à un idiome de code existant comme une compréhension, ou alambda
, ou (Dieu nous en préserve) une chaîne à passereval(…)
( dans laquelle qv docs.python.org/3/library/functions.html# eval si vous devez).lambda
pour affecter une fonction à une variable pour la réutilisation est un mauvais style de codage. Il y adef
pour ça.Une autre façon est avec Ellipsis:
la source
None
,136
ou"NothingHere"
. Mais le fillgap correct en python estpass
.