> Il giorno 13 gen 2020, alle ore 10:16, Marco Beri <marcob...@gmail.com> ha > scritto: > > On Mon, Jan 13, 2020 at 9:09 AM Giovanni Porcari > <giovanni.porc...@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@lists.python.it > https://lists.python.it/mailman/listinfo/python _______________________________________________ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python