Est-il possible d'écrire seule ligne d'instruction de retour avec l'instruction if?
Est possible de revenir à un mode en ligne en python
La recherche de quelque chose comme cela
return None if x is None
Essayé ci-dessus, et il n'est pas valide la syntaxe
Je pourrais le faire facilement:
if x is None:
return None
Mais juste curieux de savoir si je peux combiner dessus si l'instruction en une seule ligne
- Quel est le mal à
return x
? - Que faire si
x
n'était pas Aucun? - L'OP n'ont rien dit à propos de l'autre partie.
- Être conscient que le retour des fonctions Aucune implicitement que si elles n'atteignent pas une instruction de retour. Si c'est la dernière instruction dans une fonction, il est équivalent à
return None if x is None else None
, qui n'a aucun sens.
Vous devez vous connecter pour publier un commentaire.
Il est possible d'écrire un standard de l'instruction "if" sur une seule ligne:
Cependant la pep 8 guide de style recommande contre cela:
Oui, ça s'appelle un expression conditionnelle:
Vous avez besoin d'un
else something
dans une condition pour que cela fonctionne.False
si x n'est pasNone
.return [False,None][x is None]
? Moi non plus... passeFalse
retourFalse
était juste quelque chose que j'ai ajouté. Bien sûr, l'OP peut facilement le remplacer par tout ce qu'il doit revenir. Il n'était pas censé être quoi que ce soit. Enfait, je vais le changerFalse
ousomething_else
c'est à propos de l'hypothèse que l'OP veut absolument la fonction de résilier et de revenir à ce point, qui, à strictement parler, n'est pas mentionné dans la question. Peut-être que l'OP veut que la fonction de procéder avec quelque chose de else si la condition est négatif.return test ? true_express : false_expression;
en Celse
est nécessaire dans l'acceptation de l'expression pour les rendre identiques.return
opérateur une fois dans une expression ternaire. Le code suivant ne fonctionnera pas: retour"Yes" if value >= True else return "No"
Avertissement: ne pas faire ça. Si vous voulez vraiment un one-liner puis comme nakedfanatic dit juste briser la règle d'or de la PEP-8. Cependant, il illustre pourquoi
return
n'est pas se comporter comme vous le pensiez, et ce qu'est une chose ressemblerait qui ne se comportent comme vous avez penséreturn
pourrait.La raison pour laquelle vous ne pouvez pas dire
return None if x is None
, c'est quereturn
introduit une déclaration, pas une expression. Donc il n'y a aucun moyen de parenthesise il(return None) if x is None else (pass)
, ou quoi que ce soit.C'est OK, nous pouvons résoudre ce problème. Nous allons écrire une fonction
ret
qui se comporte commereturn
sauf que c'est une expression plutôt qu'une déclaration complète:return
n'est pas une expression, donc le seul moyen pour utiliser une expression pour sortir d'une fonction est de jeter quelque chose. Ou unyield
expression, mais c'est généralement pas le cas.Vous pouvez également essayer les
list[bool]
expression:Maintenant, si la deuxième tranche est évaluée à true, il n'en est retourné dans le cas contraire, la valeur de retour est retourné
return
opérateur une FOIS dans une expression ternaire.return "Yes" if value == True else "No"
sera de retour "Aucune" dans la déclaration.