Talk

Become a Better Pythonista by Abusing List Comprehensions and :=

venerdì 26 maggio

15:25 - 15:55
StanzaRisotto
LinguaInglese
Livello audienceIntermediate
Elevator pitch

L’obiettivo? Poter riscrivere qualsiasi loop tramite comprehensions. Perché? Parlando non-stop di tutte le funzionalità delle comprehension e del walrus operator, vi convincerò (facilmente!) che conoscere alcuni aspetti di Python al punto di abusarne vi aiuterà nello sviluppo di ogni giorno.

Descrizione

La struttura del talk sarà basata sul riscrivere snippet sempre più lunghi di codice apparentemente normale in comprehension non altrettanto normali.

E vi giuro che è una buona idea. Per esempio, questo ci darà modo di parlare di:

  • Come usare più di un loop in una comprehension!

E.g.: sapreste distinguere tra [[x+y for y in range(10)] for x in range(10)] e [x+y for y in range(10) for x in range(10)]?

  • Come usare i generator comprehension!

E.g.: cosa succede se rimuovete le [] da sum([x for x in range(10)])? Funziona comunque?

  • Come sapere cosa succede quando si usa il walrus operator, con esempi che hanno confuso anche pythonisti esperti!

E.g.: sapreste dire quale delle seguenti linee sono corrette e, in caso, come correggerle?

function(function := print)

assert ((value := 5) if value else 3) == 5

print(*[value := x for x in range(5)], sep=str(value))

  • Come usare le dict comprehension!

E.g.: sapreste re-implementare tutte le funzioni built-in per dizionari in una sola riga?

  • Ripassare come ‘or’ e ‘and’ possono essere usate nelle espressioni and perché possono confondervi or rendere il codice più chiaro!

E.g.: qual è il valore di a dopo aver eseguito questa linea?

((a := 5) and (a := 0) or (a := a + 1)) and ((a := a + 1) and (a - 2) and (a := 5))

Eccetera. Si, tutti questi esempi sono costruiti ad arte per essere intenzionalmente incomprensibili; ma saperli comprendere tornerà utile quando incontrerete del codice inavvertitamente incomprensibile.

TagsClean Code
participant photo

Niccolò Venerandi

I study Mathematics in Genoa and Stockholm. I do promotion and development for the open-source organization KDE. I have a Youtube channel regarding Linux desktops and their designs. I’ve taught Python to elementary and middle school students; I’ve also once taught it at CNR.