Nouveautés de Python 3 : http://docs.python.org/dev/3.0/whatsnew/3.0.html
ChangeLog complet : http://www.python.org/download/releases/3.0/NEWS.txt
Documentation : http://docs.python.org/dev/3.0/
Par rapport à 3.0rc1, il s'agit essentiellement de corrections de bugs. D'ailleurs, vu la quantité de bugs critiques (qui n'étaient -forcément- pas prévus), Python 3.0 a pris beaucoup de retard sur son planning. L'équipe Python préfère corriger tous les bugs plutôt que de sortir une version boguée qui dégoûterait les gens de Python 3.
Par rapport Python 2.5, Python 3.0 inclut tous les changements de Python 2.6. Piqûre de rappel :
http://linuxfr.org/2008/10/02/24556.html
http://docs.python.org/whatsnew/2.6.html
La version 3.0rc1 est sortie le 17 septembre et la version finale est prévue le 3 décembre.
Selon moi, le changement majeur de Python3 est le passage intégral à Unicode : par défaut les fichiers sont ouverts en mode texte en unicode, un script python est en utf-8 (unicode), on peut utiliser des identifiants en unicode (libre à vous d'écrire en japonais, français ou anglais, après ça dépend avec qui vous souhaitez travailler), et utilisation d'unicode dans la grande majorité des modules (la bibliothèque standard).
# English vs other languages
Posté par TImaniac (site web personnel) . Évalué à 4.
Question : est-ce vraiment une bonne pratique d'utiliser autre chose que de l'anglais dans le code d'un programme ? Question d'autant plus importante dans le contexte des logiciels libres où le code est amené à être réutilisé...
[^] # Re: English vs other languages
Posté par MsieurHappy . Évalué à 2.
[^] # Re: English vs other languages
Posté par Beretta_Vexee . Évalué à 1.
http://xkcd.com/191/
[^] # Re: English vs other languages
Posté par patrick_g (site web personnel) . Évalué à 2.
[^] # Re: English vs other languages
Posté par Rémi Birot-Delrue . Évalué à 1.
[^] # Re: English vs other languages
Posté par Victor STINNER (site web personnel) . Évalué à 5.
>>> nom = input("Nom ?")
Victor
>>> prénom = input("Prénom ?")
Stinner
>>> print("Bonjour {nom} {prénom}".format(nom=nom, prénom=prénom))
Bonjour Victor Stinner
Équivalent Python 2.x :
>>> charset = "UTF-8"
>>> nom = unicode(raw_input(u"Nom ?"), charset)
Victor
>>> prenom = unicode(raw_input(u"Prénom ?"), charset)
Stinner
>>> print(u"Bonjour {nom} {prenom}".format(nom=nom, prenom=prenom))
Bonjour Victor Stinner
C'est tout de suite plus laid non ? :-) L'orthographe ne peut pas être respectée, c'est dommage. Et encore, mon heuristique pour déterminer le charset du terminal est pourrite : c'est toujours UTF-8 :-) Il faudrait utiliser une fonction pour ça qui n'est pas incluse de base de dans Python 2.x :-/
[^] # Re: English vs other languages
Posté par Archibald (site web personnel) . Évalué à 3.
Je ne connais rien à Python, mais j'ai quand même une question : pourquoi faut-il écrire 3 fois 'nom' et 3 fois 'prénom' alors que, dans certains langages, un simple 'print Bonjour $nom $prenom' (ou quelque chose de ressemblant) suffit ?
[^] # Re: English vs other languages
Posté par Olivier Grisel (site web personnel) . Évalué à 2.
>>> print("Bonjour {nom} {prénom}".format(**locals()))
devrait marcher mais j'ai pas de python 3 sous la main pour tester.
[^] # Re: English vs other languages
Posté par dkremer . Évalué à 1.
>>> print 'bonjour' + ' ' + nom + ' ' + prénom
[^] # Re: English vs other languages
Posté par norbs . Évalué à 2.
print( 'bonjour' + ' ' + nom + ' ' + prénom)
et sinon en python 2.x j'aurais plutôt écrit :
print 'bonjour' , nom , prénom
[^] # Re: English vs other languages
Posté par Nicolas Ternisien (site web personnel) . Évalué à 4.
print "Bonjour %s %s" % (nom, prenom)
Forum Software Reviews: Comparez et testez les logiciels de forums Internet!
[^] # Re: English vs other languages
Posté par Guillaum (site web personnel) . Évalué à 4.
>>> print("Bonjour {0} {1}".format(nom,prenom))
L'idée de la fonction format c'est :
1) soit tu passes les arguments par ordre, et tu les références par ordre "{0}".format('hibou')
2) soit tu passes les arguments par mot clé et tu références par mot clé
"{toto}".format(toto="hibou")
3) evidemment, le passe par mot clé, c'est juste le passage d'une table de hashage (dictionnaire en python)
hash = dict(nom='Bouchard',prénom="Guillaume")
print("Bonjour {prénom} {nom}".format(**hash))
(le ** est un peu magique, je n'ai jamais aimé...)
[^] # Re: English vs other languages
Posté par Guillaum (site web personnel) . Évalué à 3.
1) s/passe/passage
2) il est possible de mélanger les deux méthodes (ordre et mot clé)
dico = dict(nom="Bouchard",prénom="Guillaum")
"{0} ! {prénom} {nom} est un {0}".format("hibou",**dico)
3) cela permet d'introduire des formatages (je vous renvoi à la doc pour plus d'info [0])
4) la raison qui fait que il n'y a pas d'interpolation de chaîne directe comme en PHP (echo "Bonjour $prenom $nom") est simple :
a) Cela aurait demandé une modification du parseur. Ici il n'en est rien, ce n'est donc pas une notion du langage, mais seulement un outil de la librairie standard, le langage ne se complexifie pas (Python se veut simple). Si demain la fonction format doit évoluer, le parseur ne sera pas touché. De plus en tant que méthode, elle peut être surchargée sans syntaxe particulière.
b) Cela évite de devoir introduire des chaînes interpolées et des chaînes sans (en PHP le " et le ' différencie ces deux types de chaîne). Python se veut éxplicite, donc on supprime cela (j'ai beaucoup rie à mes débuts en PHP quand j'ai écris echo "$nom est ".$nom; ce n'était pas du tout ce que j'attendais.
J'aime vraiment cette fonction format de python ;)
[0] http://docs.python.org/whatsnew/2.6.html#pep-3101-advanced-string-formatting
N'hésitez pas à corriger mon orthographe, c'est comme cela que j'apprend ;)
[^] # Re: English vs other languages
Posté par Victor STINNER (site web personnel) . Évalué à 4.
Euh, c'était juste pour l'exemple :-) Pour montrer que Python3 autorise unicode partout : aussi bien dans les chaînes de caractères sans avoir à les préfixer par "u" (unicode), dans les noms de variables, dans les noms d'arguments, etc. Habituellement, j'utilise "Bonjour %s %s" % (nom, prenom) (compatible avec toutes les versions de Python) ou "Bonjour {0} {1}".format(nom, prenom) quand je hacke Python 2.6 ou 3.0 :-) En fait c'est faux, je n'écris jamais nom, mais plutôt name :-)
[^] # Re: English vs other languages
Posté par wilk . Évalué à 1.
>>> print Template('bonjour $nom $prenom').substitute(nom='archi', prenom='bald')
bonjour archi bald
[^] # Re: English vs other languages
Posté par reno . Évalué à 2.
Désolé, mais je considère que la gestion des 'template string' est pas terrible dans plein de langage y compris Python.
En C, tu as printf: avantage les format string sont puissants, inconvenient: pas typesafe, les variables sont toutes regrioupées a la fin.
Pour moi l'idéal serait:
puts "salut %{nom} tu as %02d{age}\n";
la lisibilité de mettre les variables au milieu de la chaine et la possibiité d'avoir quelque conversion simple pour l'affichage comme printf permet.
[^] # Re: English vs other languages
Posté par Sylvain Sauvage . Évalué à 4.
— une erreur ;
— de l’espéranto ;
— une obligation dans Python 3 ;
— Kenobi Obi-Wan ?
[^] # Re: English vs other languages
Posté par dkremer . Évalué à 2.
Le fait de gérer les identifiants avec des accents est rare dans le domaine des langage de programmation, c'est une première pour Python je crois.
[^] # Re: English vs other languages
Posté par norbs . Évalué à 3.
[^] # Re: English vs other languages
Posté par lolop (site web personnel) . Évalué à 1.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.