Pourquoi l'affirmation 3 ne fonctionne pas alors que l'affirmation 1 fonctionne ?
Parce que, dans la première déclaration, nous assignons une constante à une variable. L'affectation des variables est suffisamment simple pour que nous puissions continuer à affecter plusieurs constantes à une seule variable et que l'affectation se fasse toujours. Les termes "hello"
y "world"
sont deux constantes de même type. Donc, l'instruction a fonctionné.
Si nous faisons ce qui suit, nous obtiendrons SyntaxError
string1 = "Hello" 1
La raison en est que nous avons fourni plusieurs constantes dans une seule affectation de variable. Cela a troublé python et l'erreur a été signalée.
L'instruction 3 consiste à affecter une variable à partir de deux variables. Cela produira SyntaxError
car python ne sait pas ce qu'il peut faire avec 2 variables avant de les assigner à la variable.
Y a-t-il une différence technique, comme la vitesse de calcul, etc., entre les déclarations 1 et 2 ?
Oui. La seule différence technique est la lisibilité et rien d'autre. C'est en Python que la lisibilité compte le plus. Pour un œil non averti, "hello" "world"
pourrait donner l'impression que le compilateur ajouterait l'espace aux chaînes de caractères. Ce qui n'est pas le cas.
Cependant,
"hello" + "world"
est explicite et normale. Presque toujours, l'explicite est meilleur que l'implicite.
4 votes
C'est tout simplement similaire à C/C++ où
"hello " "world"
seront automatiquement concaténés ensemble1 votes
Il y a un rapport de bogue sur ce comportement, mais il a été rejeté parce qu'il est de conception : legacy.python.org/dev/peps/pep-3126
2 votes
Pylint a un avertissement pour certains cas où cette fonctionnalité du langage est source d'erreurs maintenant :
implicit-str-concat-in-sequence
. Disponible depuis Pylint 2.2 : pylint.pycqa.org/fr/stable/whatsnew/2.2.html