résumé of expert python programming (10-12 pages of notes left...)
This commit is contained in:
parent
2b506bacbd
commit
fc24b77261
|
@ -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
|
||||
....
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue