82 votes

Concaténation de chaînes de caractères sans l'opérateur '+'.

Je jouais avec Python et j'ai réalisé que nous n'avions pas besoin d'utiliser l'opérateur '+' pour concaténer des chaînes statiques. Mais cela échoue si je l'assigne à une variable.

Par exemple :

string1 = 'Hello'   'World'  #1 works fine
string2 = 'Hello' + 'World'  #2 also works fine

string3 = 'Hello'
string4 = 'World'
string5 = string3   string4  #3 causes syntax error
string6 = string3 + string4  #4 works fine

Maintenant, j'ai deux questions :

  1. Pourquoi l'affirmation 3 ne fonctionne pas alors que l'affirmation 1 fonctionne ?
  2. Y a-t-il une différence technique, comme la vitesse de calcul, etc., entre les déclarations 1 et 2 ?

4 votes

C'est tout simplement similaire à C/C++ où "hello " "world" seront automatiquement concaténés ensemble

1 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

1voto

thiruvenkadam Points 362

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X