[Python] Richiesta chiarimento su SyntaxWarning

Giovanni Porcari giovanni.porcari a softwell.it
Lun 13 Gen 2020 11:54:29 CET



> Il giorno 13 gen 2020, alle ore 10:16, Marco Beri <marcoberi a gmail.com> ha scritto:
> 
> On Mon, Jan 13, 2020 at 9:09 AM Giovanni Porcari <giovanni.porcari a softwell.it> wrote:
> Marco ho fatto una prova che non mi riesco a spiegare: tu ne hai una ragione ?
> 
> (python 3.7.5)
> >> a='xy'
> >>> b='xy'
> >>> a is b
> True
> 
> >>> a='x y'
> >>> b='x y'
> >>> a is b
> False
> 
> >>> a='x_y'
> >>> b='x_y'
> >>> a is b
> True
> >>> 
> 
> Hai spiegazioni ?
> 
> Te le ha già date (alla grande!) Carlo.
> Per capire se "is" torna True puoi anche usare id():

Si certo il punto è di capire se nell'object space sono oggetti diversi
e quindi con un diverso id o lo stesso oggetto.

Ad esempio per numeri interi il comportamento è che sono singleton da -5 a +256

>>> b=-5
>>> a=-5
>>> a is b
True
>>> b=-6
>>> a=-6
>>> a is b
False

>>> a=256
>>> b=256
>>> a is b
True
>>> a=257
>>> b=257
>>> a is b
False

Inoltre sull'auto intern() degli identificatori pare che si valido ma solo se ascii.

In ogni caso sempre meglio usare la 'is' con giudizio :D

Ciao

G


> 
> >>> a="xy"
> >>> b="xy"
> >>> id(a)
> 140205877191544
> >>> id(b)
> 140205877191544
> >>> a="x y"
> >>> b="x y"
> >>> id(a)
> 140205877191600
> >>> id(b)
> 140205877191656
> >>> 
> 
> Comunque da qui si capisce la pericolosità di usare "is" a sproposito :-)
> 
> Ciao.
> Marco.
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> https://lists.python.it/mailman/listinfo/python



Maggiori informazioni sulla lista Python