101 votes

Pourquoi est-parenthèse dans l'impression volontaire dans Python 2.7?

En Python 2.7 les deux suivantes en fera de même

print("Hello, world!") # Prints "Hello, world!"

print "Hello, world!" # Prints "Hello, world!"

Cependant le suivant ne sera pas

print("Hello,", "world!") # Prints the tuple: ("Hello,", "world!")

print "Hello,", "world!" # Prints the words "Hello, world!"

En Python 3.x parenthèse print est obligatoire, essentiellement en faire une fonction, mais en 2.7 les deux fonctionneront avec des résultats différents. Que dois-je savoir à propos de print dans Python 2.7?

5voto

Karlo Smid Points 75

et nous avons ici effet secondaire quand il s'agit de l'utf-8.

>> greek = dict( dog="σκύλος", cat="γάτα" )
>> print greek['dog'], greek['cat']
σκύλος γάτα
>> print (greek['dog'], greek['cat'])
('\xcf\x83\xce\xba\xcf\x8d\xce\xbb\xce\xbf\xcf\x82', '\xce\xb3\xce\xac\xcf\x84\xce\xb1')

La dernière impression est tuple avec octet hexadécimal valeurs.

En Ce Qui Concerne, Karlo.

5voto

Don O'Donnell Points 1687

C'est très simple et n'a rien à voir avec l'avant ou vers l'arrière de compatibilité.

La forme générale de l' print dans toutes les versions de Python antérieures à la version 3 est:

print expr1, expr2, ... exprn

(Chaque expression est évaluée, est converti en une chaîne et affiché avec un espace entre eux.)

Mais rappelez-vous que le fait de mettre des parenthèses autour de l'expression est toujours la même expression.

Ainsi, vous pouvez également écrire ce que:

print (expr1), (expr2), ... (expr3)

Cela n'a rien à voir avec l'appel d'une fonction.

2voto

Charlie Martin Points 62306

Fondamentalement, en Python avant de Python 3, impression a été une déclaration spéciale qui a imprimé toutes les chaînes si eu comme arguments. Donc, print "foo","bar" signifiait simplement "imprimer" foo " par "bar"". Le problème c'était qu'il était tentant d'agir comme si l'impression de l'été, et le Python grammaire est ambiguë sur ce que, depuis (a,b) est un tuble contenant a et b, mais foo(a,b) est un appel à une fonction de deux arguments.

Donc, ils ont fait le changement incompatible pour 3 afin de rendre les programmes moins ambiguë et plus régulier.

(En fait, je pense que de 2,7 se comporte comme 2.6 fait sur, mais je ne suis pas certain.)

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