Quelles fonctionnalités de Python 3.0 vont changer votre codage quotidien? [fermé]

StackOverflow https://stackoverflow.com/questions/340972

  •  19-08-2019
  •  | 
  •  

Question

Py3k vient de paraître de nouvelles choses intéressantes ! Je suis curieux de savoir pourquoi les pythonistes sont si excités. Quelles fonctionnalités vont affecter votre écriture de code au quotidien ou l’attendez-vous avec impatience?

Était-ce utile?

La solution

Il y a quelques points qui m'intéressent assez:

Autres conseils

J'espère que la chaînage des exceptions s'accroche. Perdre des traces d’exception dues à l’empatement présenté ci-dessous était ma bête noire depuis longtemps:

try:
   doSomething( someObject)
except:
   someCleanup()

   # Thanks for passing the error-causing object,
   # but the original stack trace is lost :-(

   raise MyError("Bad, bad object!", someObject)

Je sais, je sais, ajouter des informations de contexte à l'exception d'origine et tout en préservant la trace de la pile d'origine était possible, mais cela nécessitait un piratage vraiment moche. Maintenant, vous pouvez (et devriez! ) simplement:

raise MyError("Bad, bad object!", someObject) from original_exception

et facilement obtenir les deux de ce qui précède. Donc, dans le cadre de ma sainte mission contre les traces de piles perdues:

N'oubliez pas la clause de lorsque vous relancez des exceptions! Merci.

Franchement, rien de tout cela. Même si je vais probablement utiliser une partie de la nouvelle syntaxe, j'utilise principalement Python pour les scripts simples et rapides et les expressions régulières.

Je pense que les nouvelles fonctionnalités rendront beaucoup de petites choses un peu plus faciles pour beaucoup de personnes et quelques grandes choses pour quelques personnes. Cependant, je suis sceptique quant aux affirmations selon lesquelles beaucoup de gens finiront par trouver des gains énormes de productivité.

En bref, je pense que ces changements rendront les choses un peu meilleures dans l’ensemble, mais ne vous attendez pas à des miracles.

Ce n’est pas vraiment une fonctionnalité, mais je pense que le nettoyage de la bibliothèque sera d’une grande aide, en particulier. aux nouveaux programmeurs python. À plus d’une occasion, j’ai voulu faire quelque chose en python uniquement pour trouver deux bibliothèques incluses offrant cette fonctionnalité, sans raison évidente de choisir une bibliothèque plutôt que l’autre.

Voici un bon article qui explique les nouvelles fonctionnalités et / ou les différences en ce qui concerne Python 2.x vers Python 3.

http: //www.b-list. org / weblog / 2008 / dec / 05 / python-3000 /

En dépit de ce qu’ils ont fait pour obtenir le plus petit cours possible sur la migration avec des langages interprétés, je trouve que la sortie de python3 dans son intégralité est une décennie de douloureuse trajectoire de migration. Par conséquent, je ne le trouve pas particulièrement attrayant.

Les améliorations qu’ils ont apportées sont toutes bonnes et importantes. Deux types différents de chaînes de caractères ont été une véritable source de désagréments partout. Il est donc bon qu’ils se soient débarrassés de l’objet unicode et aient introduit l’octet octet mis à part l’unicode str.

La différence entre bignum et num-change venait de la commodité et je pense que c’était aussi un bon choix. Dans l'ensemble, ils ont nettoyé la langue des composants nocifs accumulés au cours des dix dernières années.

La deuxième pire chose qu’ils ont faite est une implémentation 10% plus lente, comme si la rapidité n’était pas déjà un problème pour Python.

Je pense que la publication de python3 nuit à la réputation de python plutôt qu’à l’améliorer. En ce moment, ils sont de retour au début avec leur langue quand il s'agit de supporter les bibliothèques.

Ne pas avoir à en faire autant.

  • Ne plus avoir à vous soucier de l’utilisation de unicode() ou de u"".

  • Ne pas avoir à chercher dans les documents urllib urllib2 et httplib pour trouver où cela fonctionne, je dois encoder un fichier et le télécharger via une demande POST

  • Ne pas avoir à se soucier de savoir si except TypeError, something: va attraper un TypeError et something, ou <=> dans `quelque chose ..

Et inversement, avoir à regarder à nouveau la documentation! Je connais assez bien python maintenant, je peux faire la plupart des choses sans me référer à pydoc, mais chaque fois que je le fais, je découvre un autre module ou une fonction utile.

La déclaration d'impression. <sniff> Je commence déjà à le manquer.

En fait, avant même de passer à Python 2.6, nous purgeons print en faveur de logging.debug. C’est juste pour sortir de l’habitude d’utiliser <=> avec désinvolture pour le débogage, le support et le développement.

Il reste quelques programmes qui produisent des éléments sur stdout. Pour ceux-là, nous pouvons introduire un & "; Print &"; Compatible 2.6 / 3.0 fonctionner dans l'une de nos bibliothèques.

La compréhension du dictionnaire n’est pas forcément bouleversante, mais très agréable.

Bien que {k: v for k, v in list} soit plus long que dict(list), il est plus souple et plus explicite.

L’une des caractéristiques les plus sous-estimées de Python 3 est l’introduction des classes de base abstraites. C’est quelque chose qui ne révolutionnera pas immédiatement la programmation Python, mais représente un changement intéressant, passant d’une approche simpliste à la frappe de canards à une interface mieux définie.

Pour plus d'informations, consultez le PEP 3119 .

La plupart d’entre eux alors que je considère la sortie de Python 3 comme une motivation pour apprendre la langue.

Unicode (utf-8) est très important pour les personnes vivant dans des pays non anglophones.

Je n'ai pas aimé spécifier l'encodage au début du fichier, car j'oublie toujours. Généralement, mon texte est compatible avec ASCII, car j'utilise UTF-8. Il fonctionne donc sans la spécification de codage. Mais si j’écris mon nom (avec un accent) ou un & # 8364; signe, ça casse ... J'ai fini par écrire des caractères Unicode avec leur représentation \ uxxxx mais c’est un peu cryptique!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top