Il n'y a pas vraiment de "première chaîne"; il y a des crus les littéraux de chaîne, qui sont exactement les littéraux de chaîne marquée par un 'r'
avant le guillemet d'ouverture.
Une "première chaîne littérale" est une syntaxe légèrement différente pour un littéral de chaîne, dans lequel une barre oblique inverse, \
, est prise en ce sens "juste une barre oblique inverse" (sauf quand il s'agit de droite avant d'un devis qui doit normalement prendre fin le littéral) - pas de "séquences d'échappement" pour représenter les retours à la ligne, tabulations, correction arrière, la forme d'avances, et ainsi de suite. Dans la normale des littéraux de chaîne, chaque barre oblique inverse doit être doublée pour éviter d'être considéré comme le début d'une séquence d'échappement.
Cette syntaxe variante existe surtout parce que la syntaxe d'expression régulière pattern est lourd avec des barres obliques inverses (mais jamais à la fin, de sorte que le "sauf" la clause ci-dessus n'a pas d'importance) et il semble un peu mieux quand vous éviter de doubler chacun d'entre eux-c'est tout. Il a également acquis une certaine popularité à exprimer les chemins de fichiers natif de Windows (avec les barres obliques inverses au lieu de régulier des barres obliques comme sur les autres plateformes), mais c'est très rarement nécessaire (étant donné que les barres obliques pour la plupart fonctionnent très bien sur Windows aussi) et à l'imparfait (en raison de "l'exception" de la clause ci-dessus).
r'...'
est une chaîne d'octets (en Python 2.*), ru'...'
et ur'...'
sont des chaînes Unicode (encore une fois, en Python 2.*), et l'un des trois autres types de citer également produit exactement les mêmes types de chaînes de caractères (donc, par exemple, r'...'
, r'''...'''
, r"..."
, r"""..."""
sont toutes les chaînes d'octets, et ainsi de suite).
Pas sûr de ce que tu veux dire par "aller retour" - il n'est pas intrinsèquement en arrière et en avant les directions, car il n'y a pas de matières string type, c'est juste une syntaxe alternative pour exprimer parfaitement normal objets string, byte ou unicode, car ils peuvent être.
Et oui, en Python 2.*
, u'...'
est bien sûr toujours distincte de la juste '...'
- le premier est une chaîne unicode, ce dernier est une chaîne d'octets. L'encodage que la traduction littérale pourrait être exprimée en est complètement orthogonale de la question.
E. g., considérer (Python 2.6):
>>> sys.getsizeof('ciao')
28
>>> sys.getsizeof(u'ciao')
34
l'Unicode objet de cours prend plus d'espace mémoire (très petite différence pour une très courte chaîne, évidemment;-).