2010-07-23 6 views
1

Merci d'avance pour votre aide.Les "caractères" de la ligne de commande Python renvoient les 'caractères'

Lors de la saisie de "example" sur la ligne de commande, Python retourne "example". Je ne trouve rien sur le web pour expliquer cela. Tous les matériaux de référence parlent de chaînes dans le contexte de la commande print, et je reçois tout le matériel sur l'utilisation de guillemets simples, guillemets simples, guillemets, commandes d'échappement, etc

Je ne peux pas trouver quoi que ce soit expliquant pourquoi entrer du texte entouré de guillemets à la ligne de commande renvoie toujours le même texte entouré de guillemets simples. Ce qui donne? Merci.

+2

Toutes mes excuses. Je l'ai réglé. C'est évaluer l'expression. Merci. – Hunter

+0

Maintenant, acceptez simplement la meilleure réponse en cliquant sur la coche à gauche de la réponse. –

Répondre

1

En python, les guillemets simples et les guillemets doubles sont sémantiquement identiques. Cela m'a paru étrange au premier abord, car en C++ et d'autres langages fortement typés, les guillemets simples sont char et les doubles sont string. Il suffit de s'habituer au fait que python ne se soucie pas des types, et donc il n'y a pas de syntaxe spéciale pour marquer une chaîne contre un caractère. Ne laissez pas le nuage obscurcir votre perception d'une langue géniale

+2

Python se soucie des types (contrairement à Perl ou PHP ou Ruby ou ...), mais il n'a en effet pas de type char. Mais ce n'est pas la question - il était juste confus par le fait que le REPL évalue l'entrée et l'affiche, même en l'absence d'impression. – delnan

0

Ne vous laissez pas troubler. Dans python, les guillemets simples et les guillemets doubles sont identiques. The crée un objet chaîne.

6

En Python, les deux 'string' and "string" are used to represent string literals. Ce n'est pas comme Java où les guillemets simples et doubles représentent différents types de données pour le compilateur.

L'interpréteur évalue chaque ligne que vous entrez et affiche cette valeur pour vous. Dans les deux cas, l'interpréteur évalue ce que vous entrez, obtient une chaîne et affiche cette valeur. La manière par défaut d'afficher les chaînes est entre guillemets simples, donc les deux fois la chaîne est affichée entre guillemets simples.

Cela semble étrange - en ce sens qu'il rompt la règle de Python de There should be one - and preferably only one - obvious way to do it - mais je pense que refuser l'une des options aurait été pire.

Vous pouvez également saisir une chaîne littérale en utilisant des triples guillemets:

>>> """characters 
... and 
... newlines""" 
'characters\nand\nnewlines' 

Vous pouvez utiliser la ligne de commande pour confirmer que ce sont la même chose:

>>> type("characters") 
<type 'str'> 
>>> type('characters') 
<type 'str'> 
>>> "characters" == 'characters' 
True 

L'interprète utilise le __repr__ method de un objet pour que l'affichage vous imprime. Donc, sur vos propres objets, vous pouvez déterminer comment ils sont affichés dans l'interpréteur. Nous ne pouvons pas changer la méthode pour __repr__ types intégrés, mais nous pouvons personnaliser la sortie de l'interpréteur using sys.displayhook:

>>> import sys 
>>> def customoutput(value): 
...  if isinstance(value,str): 
...  print '"%s"' % value 
...  else: 
...  sys.__displayhook__(value) 
... 
>>> sys.displayhook = customoutput 
>>> 'string' 
"string" 
Questions connexes