résumé of expert python programming (10-12 pages of notes left...)

This commit is contained in:
Fred Pauchet 2019-10-06 21:12:08 +02:00
parent 2b506bacbd
commit fc24b77261
2 changed files with 69 additions and 16 deletions

View File

@ -0,0 +1,69 @@
= Expert Python Programming
J'ai acheté les deux dernières versions du livre link:Expert Python Programming[https://www.packtpub.com/eu/application-development/expert-python-programming-third-edition]. La deuxième date de 2016, alors que la v3 a été mise à jour relativement récemment (avril 2019). Profitez en, elle est toujours à 9€ chez https://www.packtpub.com ;-).
Le livre aborde énormément de points concernant le langage; l'avantage est qu'un chapitre donnera une très bonne idée des possibilités, en approfondissant "juste-ce-qu'il-faut" pour, soit vous donner l'eau à la bouche, soit vous permettre de passer au chapitre suivant sans trop de regrets, mais en sachant où trouver des informations le jour où vous en aurez besoin.
*Long story short*, les points suivants sont abordés:
* Le statut actuel de Python, la comparaison entre la v2 et la v3 (v2 dont le support s'arrêtera au link:1er janvier 2020[https://pythonclock.org/]), les problèmes de compatibilité, les différentes versions de l'interpréteur (CPython, Jython, IronPython, Stackless, Pypy, ...) et ce qui les différencie.
* La construction d'un environnement de travail cohérent et fonctionnel: Vagrant, environnements virtuels, Docker,
* Des conseils pour améliorer la lisibilité et la maintenance du code
* Quelques points
== Current status of Python
== Outils
=== Environnemnts
* Vagrant
* Docker & Docker-compose (voire, Podman ;-))
* Supervisor/circus
=== Du langage
* `from enum import Enum, Flag, auto`: permet de déclarer une classe type `class B(Flag): Pending.auto()`.
* **Itérateurs**: container qui implémente le protocole d'itération: `__next__`, `__iter__`, ... Et ajouter un `StopIteration` quelque part :-)
* **Générateurs**, qui constituent la base des coroutines et de la concurrence asynchrone.
* **Décorateurs**: bien utiliser `functools.wraps` sur les décorateurs pour conserver leur identité et pour ne pas flinguer les outils de documentation. Cela permet notamment de conserver les points suivants fonctionnels: vérifications des arguments (xmlrpc, mypy, ...), caching, proxy, context providers.
* **Fonctions anonymes** `lambda <args>: <expression>`
....
def circle_area(radius):
return math.pi * radius ** 2
lambda radius: math.pi * radius ** 2
....
Les **anotations** - voir PEP3107 - permettent notamment de faire du type checking statique, des propositions directement dans l'IDE, de la documentation logique de fonctions, ... Voir également link:mypy[http://www.mypy-lang.org/].
Les signatures de fonction type **Keywords only arguments** permettent d'appeler la fonction sans spécifier les mots-clés. Par exemple, `func(a, b, *, suppress_notif=True)`.
=== Des listes
* map(): applique la fonction sur chaque élément itérable.
* filter(): filtre les éléments qui répondent à un prédicat.
* reduce(): exécute une opération cumulativement (genre, la fonction `sum`). Par exemple: `reduce(lambda a, b: a + b, range(10))`.
Autre exemple pratique:
....
>>> seq = filter(
lambda squara: square % 3 == 0 and square % 2 == 1,
map(
lambda numb: numb ** 2,
count()
)
)
>>> next(seq)
9
>>> next(seq)
81
....

View File

@ -1,16 +0,0 @@
= Expert Python Programming
J'ai acheté les deux dernières versions du livre link:Expert Python Programming[https://www.packtpub.com/eu/application-development/expert-python-programming-third-edition]. La deuxième date de 2016, alors que la v3 a été mise à jour relativement récemment (avril 2019). Profitez en, elle est toujours à 9€ chez https://www.packtpub.com ;-).
Le livre aborde énormément de points concernant le langage; l'avantage est qu'un chapitre donnera une très bonne idée des possibilités, en approfondissant "juste-ce-qu'il-faut" pour, soit vous donner l'eau à la bouche, soit vous permettre de passer au chapitre suivant sans trop de regrets, mais en sachant où trouver des informations le jour où vous en aurez besoin.
*Long story short*, les points suivants sont abordés:
* Le statut actuel de Python, la comparaison entre la v2 et la v3 (v2 dont le support s'arrêtera au link:1er janvier 2020[https://pythonclock.org/]), les problèmes de compatibilité, les différentes versions de l'interpréteur (CPython, Jython, IronPython, Stackless, Pypy, ...) et ce qui les différencie.
* La construction d'un environnement de travail cohérent et fonctionnel: Vagrant, environnements virtuels, Docker,
* Des conseils pour améliorer la lisibilité et la maintenance du code
* Quelques points
== Current status of Python