Si vous ne voulez pas from __future__ import print_function
vous pouvez faire ce qui suit :
a = 100
b = True
print a if b else "", # Note the comma!
print "see no new line"
Qui imprime :
100 see no new line
Si vous n'êtes pas averses à from __future__ import print_function
ou vous utilisez python 3 ou plus :
from __future__ import print_function
a = False
b = 100
print(b if a else "", end = "")
L'ajout du else est le seul changement que vous devez faire pour que votre code soit syntaxiquement correct, vous avez besoin du else pour l'expression conditionnelle (les "blocs if else en ligne").
La raison pour laquelle je n'ai pas utilisé None
o 0
comme d'autres l'ont fait dans ce fil, c'est parce que l'utilisation de la None/0
ferait en sorte que le programme print None
o print 0
dans les cas où b
es False
.
Si vous voulez lire sur ce sujet, j'ai inclus une lien aux notes de publication du patch qui a ajouté cette fonctionnalité à Python.
Le "schéma" ci-dessus est très similaire au schéma présenté dans le document PEP 308 :
Cette syntaxe peut sembler étrange et rétrograde ; pourquoi la condition va-t-elle au milieu de l'expression, et non à l'avant comme dans le C c ? x : y ? La décision a été vérifiée en appliquant la nouvelle syntaxe aux modules modules de la bibliothèque standard et en observant la lecture du code résultant. lire. Dans de nombreux cas où l'on utilise une expression conditionnelle, une valeur semble être le "cas commun" et une valeur est un "cas exceptionnel", qui n'est utilisée qu'en de rares occasions, lorsque la condition n'est pas remplie. La syntaxe conditionnelle de rend ce modèle un peu plus évident :
contenu = ((doc + ' \n ') if doc else '')
Je pense donc que, dans l'ensemble, c'est une façon raisonnable d'aborder la question, mais on ne peut pas contester la simplicité de la démarche :
if logging: print data
1 votes
Duplicata possible de Python possède-t-il un opérateur conditionnel ternaire ?
5 votes
Bonne question, réponses complexes... une réponse directe serait "l'autre partie est obligatoire".
0 votes
Une bonne chose à noter est que le si expression travaille dans
lambda
mais no la déclaration d'une ligne.