relecture

This commit is contained in:
Julien Palard 2020-03-04 00:24:51 +01:00
parent 407335b459
commit aa918fec18
3 changed files with 73 additions and 4 deletions

View File

@ -25,9 +25,6 @@ Souci : Jour 1 pytest nécessite Jour 2 pip...
- Packaging
- cookiecutter : docs/, tests/, README, setup.cfg, setup.py, ...
- List comprehension avancé
- Double for, double if, walrus
- Multiprocessing / Multithreading / Asyncio
- IO Bound vs CPU Bound
- Locks vs Queues

View File

@ -238,3 +238,69 @@ Notes:
Oui, par exemple Django `@atomic` et with `atomic:`, `contextlib.ContextDecorator`.
Parler des gestionnaires de contextes réutilisables, puis réentrants.
## The Walrus Operator
`:=`
Notes:
Démo REPL avec re.match, rappeler que les parenthèses sont souvent
obligatoires.
## Les listes en intension
```python
l = []
for i in range(5):
if i % 2 == 0:
for j in range(5):
if j % 2 == 0:
for k in range(5):
if k % 2 == 0:
if i + j + k == 4:
l.append((i,j,k))
```
## Les listes en intension
```python
>>> [(i, j, k)
... for i in range(5)
... if i % 2 == 0
... for j in range(5)
... if j % 2 == 0
... for k in range(5)
... if k % 2 == 0
... if i + j + k == 4]
[(0, 0, 4), (0, 2, 2), (0, 4, 0), (2, 0, 2), (2, 2, 0), (4, 0, 0)]
```
Notes:
Juste pour doctest:
```python
factors = lambda i: [i]
```
## Les listes en intension
```python
{x: factors(x)
for x in range(1000)
if len(factors(x)) == 3}
```
Notes: si factors est lent (spoiler: il l'est), c'est du gâchis.
## Les listes en intension
```python
{x: prime_factors
for x in range(1000)
if len(prime_factors := factors(x)) == 3}
```

View File

@ -3,7 +3,7 @@
## Les octets d'abord
```python
>>> bytes([0x01, 0x02, 0x03]) == b"\x01\x02\x03"
>>> bytes([0x01, 0x02]) == b"\x01\x02"
True
```
@ -49,3 +49,9 @@ Couvre environ 150 langues (environ toutes).
Calque latin1 de 0 à 255, même C0 (controles bien définis) et C1 (controles
ignorés, de 0x80 à 0x9F).
## encoder, décoder
- `str.encode``bytes`
- `bytes.decode``str`