Python >> Tutoriel Python >  >> Python

Concaténation de chaînes Python sans '+'

Quand j'ai vu ça pour la première fois, j'étais sûr que c'était un bug. Eh bien, c'est une fonctionnalité !

Dans le court article d'aujourd'hui, vous découvrirez une petite astuce Python que j'appelle « concaténation de chaînes sans + » . Commençons par un peu de code !

Plus et concaténation littérale de chaîne adjacente

>>> 'Fin' 'xter'
'Finxter'
>>> 'Fin' + 'xter'
'Finxter'

Il existe deux façons de concaténer des littéraux de chaîne en Python :

  • Utiliser le + opérateur entre deux littéraux de chaîne. Cela fonctionne également pour les variables.
  • Utilisation de littéraux de chaîne adjacents sans le + opérateur. Cela ne fonctionne pas pour les variables.

La concaténation de chaînes adjacentes fonctionne-t-elle pour les variables ?

Non. Voici un contre-exemple :

>>> x = 'Fin'
>>> y = 'xter'
>>> x + y
'Finxter'
>>> x y
SyntaxError: invalid syntax

La raison peut être trouvée dans la documentation :

Où utiliser la concaténation de chaînes adjacentes ?

Vous pouvez utiliser la concaténation de chaînes adjacentes pour réduire le nombre de barres obliques inverses (pour échapper au caractère de retour à la ligne) ou pour fractionner facilement les chaînes sur plusieurs lignes, ou même pour ajouter des commentaires à des parties de chaînes.

Voici un exemple où vous utilisez la concaténation de chaînes de chaînes adjacentes dans la regex findall fonction pour utiliser des commentaires pour expliquer des parties de la chaîne.

import re

x = re.findall('[A-Za-z]' # Pattern Part 1: Upper or Lowercase
               '[a-z]+',  # Pattern Part 2: Lowercase Letters
               'Hello World')
print(x)
# ['Hello', 'World']

Notez à quel point cela serait un peu déroutant lors de l'utilisation de la concaténation de chaînes avec l'opérateur plus + :

import re

x = re.findall('[A-Za-z]' # Pattern Part 1: Upper or Lowercase
               + '[a-z]+',  # Pattern Part 2: Lowercase Letters
               'Hello World')
print(x)
# ['Hello', 'World']

La signification est la même mais ce serait quelque peu déroutant en raison de la signification surchargée de l'opérateur + pour la concaténation de chaînes et dans la regex.

Pouvez-vous résoudre le puzzle ?

Un puzzle bien conçu transmet un seul point qui surprend le lecteur.

[python]
x ='py' 'thon'
print(x)
[/python]

Quel est le résultat de cet extrait de code ?

Vous pouvez vérifier si vous avez correctement résolu ce casse-tête dans notre application interactive Finxter ! Êtes-vous un codeur maître?
Testez vos compétences maintenant !

Vidéo associée