[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