J'essaie de trouver la réponse partout, mais je n'arrive pas à le trouver. Je veux être capable de retourner une déclaration dans ma fonction avec un si et un) elif / s, mais sans autre (juste à des fins d'apprentissage). Je suis conscient que vous pouvez faire quelque chose comme ceci:
def my_func(s):
return "a list" if type(s) == list else "a string" if type(s) == str else "not list or string"
5 Réponses :
S'il s'agit d'une ligne unique, vous pouvez avoir: et vous ne disposez pas (explicitement) avoir un mot clé code> utilisé.
Notez que cela ne peut pas être enchaîné.
Notez également que c'est de toute façon équivalente à: p> comme toute fonction ne renvoyant pas explicitement sinon retournera Si vous envisagez des constructions multilignes, veuillez noter que vous pouvez faire quelque chose comme: p> qui n'a pas de et: p> donc, tout dans tout, il n'y a pas beaucoup valeur dans Il est Probablement pas idéal pour la lisibilité pour chaîner plusieurs Si votre seul problème est de savoir si l'expression conditionnelle em> nécessite aucun p>
. explicite code> mais est équivalent à la fois: p>
sinon code> à la fin ou non à l'aide de la a si condition blanche b code> expression. p> si-ele code> expressions de toute façon. Il suffit d'utiliser plusieurs lignes et de profiter de la lisibilité du code. P>
el / code> comme Une partie de la grammaire Python, alors la réponse est la suivante: oui. Voir la pertinence Pep308 pour plus d'informations. P> P> P >
Oui, j'étais au courant du premier bloc de code dans votre réponse, mais cela, comme vous l'avez dit, vous ne pouvez pas être enchaîné sans plus ELIF / S sur la même ligne, car ce bloc de code est essentiellement identique à celui d'avoir le si sur un ligne et le retour 10 code> en retrait.
@Codinggrind Si la question est uniquement sur Expression conditionnelle i>, vous devez avoir un sinon code> et c'est tout.
@ Norok2 Oh, d'accord Merci pour la réponse mise à jour cependant.
Vous pouvez écrire la même idée en utilisant le retour à l'intérieur de la déclaration IF '' Si (type (s) == liste): retour .... '' p>
Qui ne permet pas de faire elif code> s
Merci, je ne savais pas à ce sujet :)
Comme indiqué, il s'agit d'une "expression conditionnelle". Les expressions doivent toujours résoudre à un objet mais sans le sinon code> cette expression ne serait pas. Aucune code> est raisonnable. P>
in retour x code>, x code> est un Expression qui doit être évaluée à un objet, quoi qu'il arrive. Donc, vous ne pouvez pas omettre le sinon code> partie du Opérateur ternaire (c'est pourquoi cela s'appelle ternaire et non "ternaire ou binaire" ;-)). Cela étant dit, vous pouvez raccourcir votre code: def my_func(s):
return {list: "a list", str: "a string"}.get(type(s), "not list or string")
... Donc Que devrait-on renvoyer la fonction en cas de manquant
sinon code> i>? Lorsque vous dites "sur la même ligne", vous disez essentiellement que vous voulez une expression conditionnelle i>, ceci est distinct de laif-elif-elif-elif-elife code> déclaration i >. Expressions Doit i> retourner une valeur, vous devez donc toujours répondre à ce cassinon code>. Mais oui, je suis aussi d'accord, juste depuis un point de vue de style, cela ne devrait pas être une ligne.