non mi piace come Python gestisce le variabil... non devono essere dichiarate e, mentre mia madre succhia cazzi, inizializzate prima di essere usate? 
No. Le puoi dichiarare al momento dell'uso, ma se per caso utilizzi una variabile senza prima averle assegnato un valore, viene sollevata un'eccezione.
Questo comportamento è molto comodo perché, al contrario di altri linguaggi di scripting permettono di utilizzare variabili mai usate prima, permette di tenere sotto controllo l'uso delle variabili.
ad esempio, se hai sbagliato a scrivere una variabile, te ne accorgi subito perché viene sollevata un'eccezione, esattamente come capita coi linguaggi dichiarativi.
In pratica unisce la comodità dei linguaggi di scripting che permettono di non dichiarare una variabile a quella dei linguaggi dichiarativi che ti obbligano a definirla, e quindi avere un posto con un valore assegnato.

P.S. Al solito sono di corsa. Ho quasi finito di sistemare il PC e altre cose, e per la prossima settimana dovrei tornare "a regime".