[Python] Scope delle variabili.
Alessandro Dentella
sandro a e-den.it
Mar 3 Feb 2015 10:28:01 CET
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
Maggiori informazioni sulla lista
Python