[Python] Writing Python like it's Rust

Davide Muzzarelli davide a muzzarelli.net
Mer 24 Maggio 2023 12:16:16 CEST


On 24/05/23 10:25, Luca Bacchi wrote:
> Sono incappato in questo articolo:
> [...]
> e devo riconoscere che descrive un generale approccio allo sviluppo in 
> Python in cui mi sono molto riconosciuto.

Idem!

> In pratica la tendenza è quella ad usare il più possibile tutti quegli 
> strumenti e quei costrutti che le ultime versioni di Python forniscono 
> per, passatemi il termine, rendere Python più nella direzione dei 
> linguaggi staticamente tipati. [...]
> Nel mio caso mi riferisco soprattutto ai Type Hints e alle dataclasses.

Anche io uso entrambi, è più facile notare errori prima ancora di 
lanciare i test e l'autocompletamento funziona meglio.

> Qualcuno direbbe: se pensi che la tipizzazione statica sia migliore 
> allora perché non usare Java al posto di Python?

Le differenze tra Java e Python sono ben altre ;)

> A parte che dopo JavaScript, Python è il linguaggio con cui sono più a 
> mio agio, in realtà penso che la strategia di "sviluppare per 
> iterazioni" in cui prima sviluppo e testo se le mie idee sono corrette e 
> funzionano; e poi aggiungo i Type Hint e definisco meglio i tipi con 
> delle classi o delle dataclasses... In sostanza faccio refactoring e 
> irrobustisco ciò che ho fatto, non sua una stratagia che mi dispiace.

Personalmente ragiono top down e scrivo funzioni brevi.

Sviluppo creando rapidamente funzioni e metodi vuoti usando i type 
hints. Mi aiuta a pensare e a intuire il funzionamento più velocemente.

Infine riempio funzioni e metodi, naturalmente implementando i test. Per 
evitare errori commento o salto le chiamate alle parti ancora vuote o 
uso dei mock temporanei.

> Qualcuno nella lista si trova nella mia stessa situazione? Pensate anche 
> voi che lo sviluppo in Python moderno non possa effettivamente fare a 
> meno di questi strumenti?

A me sono utili. A volte prevengono certi tipi di errore ma soprattutto 
mi aiutano a velocizzare e semplificano il processo mentale.

Buona giornata Luca! :)

Davide Muzzarelli


Maggiori informazioni sulla lista Python