15 marzo 2021

PythonPillola - Lo slicing #8

Nuona PythonPillola e questa volta tocca ad una delle cose più utili del nostro linguaggio, lo slicing. Partiamo subito con la semplice sintassi:
a[start:stop:step]
Quindi per "affettare" qualcosa basterà seguire la sintassi appena presentata e se non verranno specificati i tre parametri, visto che start, stop e step sono opzionali, lo slicing si comporterà di default con:
0 per start
end che corrisponderà alla fine della lista (o quello passato)
1 per lo step
Dai lo sapete ormai, gli esempi sono sempre molto più chiari di qualunque teoria:


Fate un po' di prove e liberate la fantasia, questo argomento merita tutta la vostra attenzione.

13 marzo 2021

PythonPillola - Assegnazione argomenti di una funzione tramite ** e * #7

Nuovo giorno e nuova PythonPillola tra noi. Questa volta lo scopo della #7, è quello di rendere più leggibile e meno furibonda l'assegnazione degli argomenti ad un funzione, specie se siamo davanti ad una moltitudine di elementi. Sia chiaro, quello che vi illustro non è il mio "espediente" preferito (parleremo dei data classes in un'altra PythonPillola), ma diciamo che è il secondo metodo per eleganza e pulizia del codice tra le mie preferenze, anche perché mi rendo conto che non sempre si ha il pieno controllo delle funzioni, magari scritte da un prolisso collega.

Si tratta nello specifico di creare un dizionario per passare i vari argomenti alla funzione tramite l'utilizzo di **, ma che ne dite di un esempio pratico?


Tutto è molto intuitivo, vi faccio solo notare come non importi l'ordine in cui inseriamo la coppia/chiave nel dizionario, questo verrà letto dalla funzione in base alla chiave corrispondente.

Similarmente a quanto proposto, possiamo passare i valori ad una funzione utilizzando una lista o array se preferite, ma questa volta col singolo *:


Ovviamente in questo esempio conterà l'ordine in cui passerete i valori, ma forse non dovevo dirvelo.

Altro giro ed altro regalo, per la #7 è tutto, alla prossima.

12 marzo 2021

Ma i blog sono morti?

Beeeh ... SI!

A posto, abbiamo finito, tutti a casa è stato bello scrivere per voi.

Ma in realtà è tutto un po' più complicato, perché la mia percezione è che sia semplicemente (per dire) cambiato tutto il sistema di comunicare. L'informatica vola, non c'è un anno uguale a quello dopo, perché si corre al doppio, se non al triplo o al quadruplo, della normale evoluzione. Se in alcuni settori dieci anni possono rappresentare un intervallo di tempo ragionevole in cui analizzare l'inerzia di un cambiamento, nel nostro mondo dieci anni sono "qualche era tecnologica" e di cambiamenti ce ne sono svariati. Dieci anni fa veniva lanciato l'iPad, così come il Kinect ed il Move, sembravano pronti a tracciare la strada verso nuovi orizzonti. Poi non sempre si fa centro, nulla di più sbagliato si sarebbe scoperto negli ultimi due esempi, ma tanto per farvi capire che quelle di cui parliamo sembrano albori di una tecnologia che non c'è più, sembra preistoria.

A metà degli anni 2000 in rapida successione vennero lanciati Facebook e Twitter, solo nel 2010 Instagram. Blogger, questa piattaforma, nacque nel 1999, giusto qualche anno prima di un software come WordPress. La comunicazione si spostò dai classici siti web, in cui bisognava costruire tutto, in qualcosa di diverso, una sorta di diario virtuale in cui gli scrittori potevano occuparsi più dei contenuti che del resto, l'aspetto tecnico poteva anche essere messo in secondo piano. E così è stato, fiumi di parole scritti ... ed è qui il punto, i fiumi, ah no scusate, le parole. Il blog era ed è una lettura più o meno impegnativa in cui si mettono in fila parole per esprimere concetti in maniera dilatata, mooooolto dilatata, ed anche se sono presenti i commenti, l'interazione tra scrivente e leggente era/è piuttosto limitata. Ora la comunicazione è come l'ottimismo, vola, nessuno ha più voglia di leggere oltre le tre righe, quindi torniamo al titolo, sì amici i blog sono morti se non per coloro che non hanno un account di TikTok o non sanno cos'è TikTok o non usano TikTok.

Giravo proprio qualche giorno fa su questa piattaforma ed ho visto tantissimi blog fermi da anni nella pubblicazione di nuovi contenuti, anzi diciamolo senza paura, sono la stragrande maggioranza. L'immediatezza dei socialnetwork ha ucciso queste piattaforme nettamente più elefantiache e che hanno bisogno di tempo, devono essere curate sia dagli autori che dai lettori.

Detto tutto questo quindi che morale voglio lasciare al mondo e perché sto scrivendo su questa piattaforma? Niente, non voglio lasciare nulla a nessuno, se sto scrivendo articoli in questo 2021 è solo per resilienza, tanto nessuno o quasi leggerà queste parole, lo so, queste si perderanno come lacrime nella pioggia (non ho resistito), ma poi non è che il danno è grande, non ci sono concetti aulici, il mondo è lo stesso anche se nessuno leggerà questi concetti, banalotti a dire il vero.

Quindi niente, caro il mio unico lettore complimenti a te, sei uno di quelli che resistono e che magari mi rende ancor più fiero perché non hai l'account su Facebook/Twitter/Instagram/StiCazzi (io a parte il primo e l'ultimo li ho ... sempre per dire). Ma tue sei migliore di me, sei un sopravvissuto ed hai tutta la mia stima. RESISTI!

Se invece sei gggiovane e moderno, per facilità riassumo tutto in poche parole: "Cazzo scrivi su un blog, dai mandami un vocale".

11 marzo 2021

PythonPillola - Lo Zen di Python #6

Questa non è esattamente un pillola, ma un consiglio di vita per tutti i programmatori Python nel mondo, di qualsiasi livello.

Provate a scrivere nell'interprete Python import this e otterrete lo Zen di Python di Tim Peters, per chi non lo sapesse, uno degli architetti fondamentali del nostro linguaggio preferito. Il risultato del comando sarà:
Ah dimenticavo, va declamata a memoria ogni mattina al risveglio.

Caro Ale ti scrivo, così mi distraggo un po'

Oggi sono venuto a sapere che il mio caro amico di gioventù, Ale, non c'è più. Ricoverato in ospedale a Berlino, da tempo era emigrato in Germania, ha contratto il Covid-19 ed intubato praticamente subito, ha avuto un grave problema cardiocircolatorio ed è morto. Non so molto bene i particolari, anzi questo è tutto quello che so, anche perché da tempo ci eravamo persi di vista e non conosco le persone che gli sono state vicine fino alla fine. Amicissimi quando eravamo ventenni, lavoravamo nella stessa azienda venendo dallo stesso corso di studi, ma dopo qualche anno di frequentazione assidua, le nostre strade si erano divise, ora so in maniera definitiva.

Ero sempre stato io quello che voleva andare via, a fare esperienze e anzi non sopportava la piccola realtà locale. Volevo andare a vivere negli USA, magari a Boston per via della mia fede nei Celtics, mentre lui mi prendeva sempre in giro ripetendomi che bene come a casa propria non si stava da nessuna parte del mondo. Quel casa propria è una piccola porzione della Riviera Romagnola per contestualizzare. Mi fa davvero strano ripensare a quei giorni e per un caso strano sono io quello rimasto sempre qui, mentre lui, al tempo con mia enorme sorpresa, se ne andò via per fare esperienza all'estero, con molto coraggio, quello che credevo di avere e che lui ha sempre dichiarato di non possedere. 

Ale non si è voltato più indietro, si è costruito una famiglia all'estero, ha tagliato i ponti col passato ed ha imparato ad essere un cittadino del mondo. In Italia ci veniva poco, ormai erano anni che non metteva piede sul nostro suolo, ed incredibilmente, non gli mancava per niente. Ci sentivamo poco ormai, anzi quasi facevo fatica a riconoscerlo visto che il suo italiano si era fatto vagamente incerto in questi quasi vent'anni di vita all'estero, ma nelle rare circostanze in cui ci sentivamo il cambiamento lo avvertivo, parlando spesso dell'Italia come di un luogo lontano, come se non gli appartenesse più. Lui radicato alle sue radici, aveva invece tagliato i legami ed era felice, molto felice, aveva fatto quello che nessuno si aspettava da lui, avere il coraggio di prendere la sua vita in mano e dargli una direzione. Il fatto che il maledetto destino condito da un infame virus, gli ha stroncato la vita così presto, non scalfisce nulla di quello che era diventato.

Gli vorrò sempre bene e lo ringrazio per tutti i momenti di beata felicità che abbiamo vissuto insieme. Il suo esempio ed il suo coraggio, mi accompagneranno sempre ed è questo il suo grande lascito, non aver paura di seguire i tuoi istinti e cambiare, se vuoi hai il potere di fare qualunque cosa.

Grazie Ale, grazie per il tuo insegnamento, non ti dimenticherò mai amico mio.

09 marzo 2021

PythonPillola - List Comprehensions #5

Questa è con tutta probabilità la mia PythonPillola preferita perché si parla di List Comprehensions, uno degli strumenti più utili e potenti in Python, che permettono di razionalizzare il codice, sostituendo dei guazzabugli di loop scritti spesso con poco costrutto mentale. La sintassi delle List Comprehensions è molto semplice, ma allo stesso tempo ostico per chi è alle prime armi:
[ expression for item in list if conditional ]
Magari così potrà dirvi poco, ma qualche esempio potrebbe aprirvi la mente. Inizierò da un caso molto semplice, per poi alzare un po' l'asticella della difficoltà, ma giusto un po' non temete. In questo primo esempio creeremo una lista partendo da un loop e da un range, molto semplice:


Bene ora facciamo entrare un po' di magia nelle nostre vite:


Niente male vero? Ma non fermiamoci, perché ovviamente possiamo anche eseguire delle operazioni matematiche o utilizzare dei filtri in base a determinate condizioni:


Credo proprio che lo abbiate capito, le List Comprehensions sono uno strumento altamente configurabile e con un senso drammaturgico ben sviluppato (qualunque cosa voglia dire).

08 marzo 2021

PythonPillola - Scambio variabili #4

Evviva, sono arrivato al post numero 200. Mhhh vediamo, 200 post in 16 anni, dovrei rivedere il mio concetto di evviva.
Ma di cosa si parla in questa PythonPillola? Di una cosa semplice, ma che in pochi forse conoscono, cioè lo scambio di variabili o meglio dei valori ad esse assegnati.

Come per molte cose nella vita, è molto più semplice mostrare di cosa si tratta con un esempio, che riempire l'aria di nozioni spesso superflue.


Bello vero, potreste risparmiare diverse linee di codice, senza dover per forza procedere ad una nuova dichiarazione.

Dai che nella sua semplicità vi è piaciuta, confessate...

07 marzo 2021

PythonPillola - map() #3

Visto e considerato che nella pillola precedente ho usato map(), ecco l'applicazione di questa funzione built-in di Python.

In sintesi con map() si ha la possibilità di eseguire una funzione su una sequenza, un oggetto iterabile.

Oltre all'esempio della PythonPillola #2, vediamone un altro molto semplice, che si occuperà di mettere in maiuscolo la prima lettera delle stringhe di testo passate tramite una lista.

def titolo(string):
    return string.title()

lista_di_titoli = list(map(titolo,["map", "python"]))

print(lista_di_titoli)
['Map','Python']
Semplice, pulito, conciso... pythonico.

05 marzo 2021

PythonPillola - Funzioni anonime (lambda) #2

Continuano le PythonPillole e questa volta è il turno delle funzioni anonime o funzioni lambda. Spesso non vale la pena creare una funzione se questa ad esempio deve essere usata una sola volta, ed in questi casi Python ci viene incotnro con le funzioni lambda.
>>> aggingi_dieci = lambda x: x + 10
>>> aggiungi_dieci(5)
15
Ovviamente possiamo fare applicare queste funzioni a qualunque cosa ci viene in mente:
>>> lista = [1, 2, 3, 4]
>>> moltiplica = map(lambda x: x * 2, lista)
>>> list(moltiplica)
[2, 4, 6, 8]
Bene, anche per questa PythonPillola abbiamo concluso, alla prossima.

03 marzo 2021

PythonPillola - Ellipsis #1

Prendendo ispirazione da tante belle cose sparse per la rete, vi lascierò a partire da questa, una serie di piccole e grandi pillole del mio linguaggio di programmazione preferito, Python.

La prima di queste più che una pillola è una curiosità e riguarda i puntini di sospensione, sì proprio quei ... che sono più frequenti nei linguaggi normali, non in quelli di programmazione. Pochi sanno o ricordano che tali puntini sono accetati dall'interprete:
>>> ...
Ellipsis
Se non si trova proprio subito un'applicazione per i puntiti, pensate ad esempio di usarli in un funzione perima di dichiararla, al posto del calssico pass.
def funzione():
...
Quindi i ... sono codice valido, non male vero?

Tondo è bello...

Tondo è bello...