Compare commits

..

2 Commits

Author SHA1 Message Date
16705027d6 Add some useful python packages 2022-07-29 22:02:12 +02:00
2a29096d17 Show how to return values to python generator 2022-07-29 21:59:11 +02:00
2 changed files with 48 additions and 4 deletions

View File

@@ -1,6 +1,6 @@
:PROPERTIES: :PROPERTIES:
:ID: 4fabfe6a-b104-464f-8a87-dfd7d761dbcc :ID: 4fabfe6a-b104-464f-8a87-dfd7d761dbcc
:mtime: 20220607075713 :mtime: 20220720145510
:ctime: 20211230101535 :ctime: 20211230101535
:END: :END:
#+title: Python #+title: Python
@@ -108,7 +108,6 @@ Traçage des appels de fonctions, du code exécuté et des valeurs retournées (
*** [[https://github.com/ionelmc/python-manhole][Manhole]] *** [[https://github.com/ionelmc/python-manhole][Manhole]]
Service (interface via une socket Unix permettant l'accès à un REPL) permettant l'inspection d'un programme en cours d'exécution. Service (interface via une socket Unix permettant l'accès à un REPL) permettant l'inspection d'un programme en cours d'exécution.
* Implémentations * Implémentations
** CPython ** CPython
Implémentation de référence du language Python. Implémentation de référence du language Python.
@@ -135,6 +134,10 @@ Ensemble d'outils en ligne de commande pour convertir en csv et pour les manipul
** Graphique ** Graphique
*** [[https://github.com/tfardet/mpl_chord_diagram][mpl_chord_diagram]] *** [[https://github.com/tfardet/mpl_chord_diagram][mpl_chord_diagram]]
Génération de [[https://en.wikipedia.org/wiki/Chord_diagram_(information_visualization)][Chord diagrams]] avec /matplotlib/. Génération de [[https://en.wikipedia.org/wiki/Chord_diagram_(information_visualization)][Chord diagrams]] avec /matplotlib/.
*** [[https://networkx.org/][networkX]]
Représentation de graphs.
*** [[https://github.com/pwaller/pyfiglet][pyfiglet]]
Représentation de texte sous forme d'ASCII art font.
** Logs ** Logs
*** [[https://github.com/itamarst/eliot][eliot]] *** [[https://github.com/itamarst/eliot][eliot]]
Génération de logs sous forme d'arbre. Génération de logs sous forme d'arbre.
@@ -148,6 +151,8 @@ Création de classes en évitant l'écriture du /boilerplate code/ (possibilité
** Médias ** Médias
*** [[https://github.com/ytdl-org/youtube-dl][youtube-dl]] *** [[https://github.com/ytdl-org/youtube-dl][youtube-dl]]
Téléchargement de vidéo depuis youtube, utilisé par mpv. Téléchargement de vidéo depuis youtube, utilisé par mpv.
*** [[https://github.com/goldsmith/Wikipedia][wikipedia]]
Wrapper permettant l'accès au contenu de wikipedia.
** Sérialization/déserialization ** Sérialization/déserialization
*** [[https://github.com/ICRAR/ijson][ijson]] *** [[https://github.com/ICRAR/ijson][ijson]]
Parser JSON ne nécessitant pas que l'ensemble de la donnée soit chargée pour la parser (optimisation de la mémoire Parser JSON ne nécessitant pas que l'ensemble de la donnée soit chargée pour la parser (optimisation de la mémoire
@@ -193,7 +198,6 @@ Framework d'extraction de données depuis des site web.
* utiliser ~python -m pip~ et ~python -m venv~ (exécution du module en tant que script, au lieu de ~pip~ et ~virtualenv~) permet d'éviter les incohérences * utiliser ~python -m pip~ et ~python -m venv~ (exécution du module en tant que script, au lieu de ~pip~ et ~virtualenv~) permet d'éviter les incohérences
entre les différents répertoires des packages Python (cas lorsqu'un répertoire est présent dans le ~PYTHONPATH~ et qu'un autre l'est dans le ~PATH~). entre les différents répertoires des packages Python (cas lorsqu'un répertoire est présent dans le ~PYTHONPATH~ et qu'un autre l'est dans le ~PATH~).
* Tips * Tips
** [[id:24408701-21d8-4f4e-aed9-c58746df2244][Différence entre les opérateurs + et +=]] ** [[id:24408701-21d8-4f4e-aed9-c58746df2244][Différence entre les opérateurs + et +=]]
** [[id:a32ab138-f9a8-4d61-9c09-97953c5a0a92][type == object]] ** [[id:a32ab138-f9a8-4d61-9c09-97953c5a0a92][type == object]]

View File

@@ -1,6 +1,6 @@
:PROPERTIES: :PROPERTIES:
:ID: 67410dad-d959-4029-b281-9bf1c9e69ede :ID: 67410dad-d959-4029-b281-9bf1c9e69ede
:mtime: 20220529131239 :mtime: 20220729213822
:ctime: 20220529123824 :ctime: 20220529123824
:END: :END:
#+title: Generator #+title: Generator
@@ -94,5 +94,45 @@ print(f'{sum(square(fibonacci_numbers(30))) = }')
#+RESULTS: #+RESULTS:
: sum(square(fibonacci_numbers(30))) = 1120149658760 : sum(square(fibonacci_numbers(30))) = 1120149658760
* Renvoyer une valeur à un /generator/
#+BEGIN_SRC python :results output
def dummy_generator():
i = 0
for i in range(10):
print(f'from generator {yield i}')
generator = dummy_generator()
received = generator.send(None)
print(f'from here {received}')
try:
while True:
received = generator.send(received + 100)
print(f'from here {received}')
except StopIteration:
pass
#+END_SRC
#+RESULTS:
: from here 0
: from generator 100
: from here 1
: from generator 101
: from here 2
: from generator 102
: from here 3
: from generator 103
: from here 4
: from generator 104
: from here 5
: from generator 105
: from here 6
: from generator 106
: from here 7
: from generator 107
: from here 8
: from generator 108
: from here 9
: from generator 109
* Références * Références
* [[https://blog.devgenius.io/what-is-generator-in-python-and-how-does-it-work-e6e0588785c3][What Is Generator in Python and How Does It Work ? - Medium]] * [[https://blog.devgenius.io/what-is-generator-in-python-and-how-does-it-work-e6e0588785c3][What Is Generator in Python and How Does It Work ? - Medium]]