On Tue, Feb 03, 2015 at 10:12:50AM +0100, Gollum1 wrote: > Mi sto perdendo qualcosa... > > numbers_urls = dict() > number_count = 0 > > def numbers_start_element(name, attrs): > if name == 'number': > number_count += 1 > > if 'uri' in attrs.keys(): > numbers_urls[name] = attrs['uri'] > > print(number_count) > > > Perché numbers_urls viene visto correttamente come variabile "globale" > e modificata, mentre number_count no? sono sicuro che mi sto perdendo > in una banalità oscena.
Non so se è una banalità, ma non direi. Nessuna delle 2 variabili viene passata in argomento ma una è mutable e l'altra no. Quando scrivi "numbers_urls[name] = attrs['uri']" non stai riassegnando la variabile, ma la stai solo modificando (prova a riassegnarla e vedi che all'esterno NON vedi il cambiamento). Con gli immutable non puoi fare una modifica, quindi il "+= 1" equivale ad un rebind della variabile che quindi viene fatto solo nello scopo locale. sandro *:-) -- Sandro Dentella *:-) http://www.reteisi.org Soluzioni libere per le scuole http://sqlkit.argolinux.org SQLkit home page - PyGTK/python/sqlalchemy _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python