Re: [Python] Richiesta chiarimento su SyntaxWarning
> Il giorno 13 gen 2020, alle ore 11:57, Lorenzo Buonanno > ha scritto: > > Misteri pythonici! > > Un elenco di comportamenti buffi dell'interning automatico delle stringhe in > cpython > > https://github.com/satwikkansal/wtfpython/blob/master/README.md#-strings-can-be-tricky-sometimes > > Grazie! Ottima lettura. :) G > Con spiegazioni e un link al fatto che interna stringhe che matchano > [a-zA-Z0-9_]* > https://github.com/python/cpython/blob/3.8/Objects/codeobject.c#L23 > ___ > 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
Re: [Python] Richiesta chiarimento su SyntaxWarning
> > Misteri pythonici! > Un elenco di comportamenti buffi dell'interning automatico delle stringhe in cpython https://github.com/satwikkansal/wtfpython/blob/master/README.md#-strings-can-be-tricky-sometimes Con spiegazioni e un link al fatto che interna stringhe che matchano [a-zA-Z0-9_]* https://github.com/python/cpython/blob/3.8/Objects/codeobject.c#L23 > ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Richiesta chiarimento su SyntaxWarning
> Il giorno 13 gen 2020, alle ore 10:16, Marco Beri ha > scritto: > > On Mon, Jan 13, 2020 at 9:09 AM Giovanni Porcari > 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
Re: [Python] Richiesta chiarimento su SyntaxWarning
> Il giorno 13 gen 2020, alle ore 09:35, ㎝ ha scritto: > > Il giorno lun 13 gen 2020 alle ore 09:09 Giovanni Porcari > ha scritto: >> >> 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 ? > > Se la stringa segue le regole sintattiche di un identificatore, viene > intern()ata automaticamente. > Non sapevo che le strinche ammesse come identificatori fossero auto sys.intern(). Però se fai: >>> a='cosi' >>> b='cosi' >>> a is b True >>> a='così' >>> b='così' >>> a is b False >>> così=99 >>> print (così) 99 Il che mi farebbe pensare che seppure in Python3 'così' sia un identificatore valido che però non viene intern()at0. Misteri pythonici! G > ``` import sys a = sys.intern("a b") b = sys.intern("a b") a is b > True > ``` > > 👋 > ㎝ > > -- > THE 🍺-WARE LICENSE (Revision ㊷): ><㎝@🐍.it> wrote this 📧. As long as you retain this notice you can >do whatever you want with this stuff. If we meet some day, and you >think this stuff is worth it, you can buy me a 🍺 in return. — ㎝ > ___ > 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
Re: [Python] Richiesta chiarimento su SyntaxWarning
On Mon, Jan 13, 2020 at 11:16 AM Alessandro Dentella < sandro.dente...@gmail.com> wrote: > > >Comunque da qui si capisce la pericolosità di usare "is" a sproposito > > Non mi è chiaro, stai suggerendo che questo sia un uso scorretto di > "is"? A me pare corretto ed istruttivo... che intendi? > No, no, scusa, faccio riferimento al codice dell'OP: if richiesta_proseguimento_partita is not "s" and richiesta_proseguimento_partita is not "S" and richiesta_proseguimento_partita is not "n" and richiesta_proseguimento_partita is not "N": Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Richiesta chiarimento su SyntaxWarning
On Mon, Jan 13, 2020 at 10:16:35AM +0100, Marco Beri wrote: >On Mon, Jan 13, 2020 at 9:09 AM Giovanni Porcari ><[1]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(): >>>> 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. Non mi è chiaro, stai suggerendo che questo sia un uso scorretto di "is"? A me pare corretto ed istruttivo... che intendi? sandro *:-) ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Richiesta chiarimento su SyntaxWarning
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(): >>> 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
Re: [Python] Richiesta chiarimento su SyntaxWarning
Il giorno lun 13 gen 2020 alle ore 09:09 Giovanni Porcari ha scritto: > > 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 ? Se la stringa segue le regole sintattiche di un identificatore, viene intern()ata automaticamente. ``` >>> import sys >>> a = sys.intern("a b") >>> b = sys.intern("a b") >>> a is b True ``` 👋 ㎝ -- THE 🍺-WARE LICENSE (Revision ㊷): <㎝@🐍.it> wrote this 📧. As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a 🍺 in return. — ㎝ ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Richiesta chiarimento su SyntaxWarning
> Il giorno 9 gen 2020, alle ore 20:15, Marco Beri ha > scritto: > > > > Il gio 9 gen 2020, 19:57 Carpediem ha scritto: > Ciao a tutti, > > ho aggiornato la mia versione di python dalla 3.6 alla 3.8 dopodichè ho > avviato un mio programmino che ha finora sempre girato senza indicare > alcun errore e ora invece mi segnala su sette righe di comando (tutte > grossomodo dello stesso tipo) il seguente avviso: > > SyntaxWarning: "is not" with a literal. Did you mean "!="? >if richiesta_proseguimento_partita is not "s" and > richiesta_proseguimento_partita is not "S" and > richiesta_proseguimento_partita is not "n" and > richiesta_proseguimento_partita is not "N": > > Il programma, se eseguito, si comporta comunque come in precedenza ma > non comprendo per quale motivo ora vengano evidenziate tali righe di > comando. Inoltre, la domanda è: che differenza c'è tra "!=" e "is not" ? > > > Le cose cambiano tra una versione e l'altra e le maglie si stringono. > > https://www.tutorialspoint.com/What-is-difference-in-Python-operators-and-is-not 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 ? Ciao G > > 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
Re: [Python] Richiesta chiarimento su SyntaxWarning
Il giorno gio 9 gen 2020 alle ore 19:57 Carpediem ha scritto: > > [...] > > SyntaxWarning: "is not" with a literal. Did you mean "!="? >if richiesta_proseguimento_partita is not "s" and > richiesta_proseguimento_partita is not "S" and > richiesta_proseguimento_partita is not "n" and > richiesta_proseguimento_partita is not "N": Io userei qualcosa del genere: if not richiesta_proseguimento_partita in [ "s", "S", "n", "N"]: ... Ciao -- Daniele www.fugamatematica.blogspot.com giusto! nel verso forse è perché non guardiamo le cose Quando non ci capiamo, ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Richiesta chiarimento su SyntaxWarning
> > > Le cose cambiano tra una versione e l'altra e le maglie si stringono. > Sopratutte se sono di lana e non le lavi inacqua fredda ;) Carlos -- EZLN ... Para Todos Todo ... Nada para nosotros ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Richiesta chiarimento su SyntaxWarning
Il gio 9 gen 2020, 19:57 Carpediem ha scritto: > Ciao a tutti, > > ho aggiornato la mia versione di python dalla 3.6 alla 3.8 dopodichè ho > avviato un mio programmino che ha finora sempre girato senza indicare > alcun errore e ora invece mi segnala su sette righe di comando (tutte > grossomodo dello stesso tipo) il seguente avviso: > > SyntaxWarning: "is not" with a literal. Did you mean "!="? >if richiesta_proseguimento_partita is not "s" and > richiesta_proseguimento_partita is not "S" and > richiesta_proseguimento_partita is not "n" and > richiesta_proseguimento_partita is not "N": > > Il programma, se eseguito, si comporta comunque come in precedenza ma > non comprendo per quale motivo ora vengano evidenziate tali righe di > comando. Inoltre, la domanda è: che differenza c'è tra "!=" e "is not" ? > Le cose cambiano tra una versione e l'altra e le maglie si stringono. https://www.tutorialspoint.com/What-is-difference-in-Python-operators-and-is-not Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
[Python] Richiesta chiarimento su SyntaxWarning
Ciao a tutti, ho aggiornato la mia versione di python dalla 3.6 alla 3.8 dopodichè ho avviato un mio programmino che ha finora sempre girato senza indicare alcun errore e ora invece mi segnala su sette righe di comando (tutte grossomodo dello stesso tipo) il seguente avviso: SyntaxWarning: "is not" with a literal. Did you mean "!="? if richiesta_proseguimento_partita is not "s" and richiesta_proseguimento_partita is not "S" and richiesta_proseguimento_partita is not "n" and richiesta_proseguimento_partita is not "N": Il programma, se eseguito, si comporta comunque come in precedenza ma non comprendo per quale motivo ora vengano evidenziate tali righe di comando. Inoltre, la domanda è: che differenza c'è tra "!=" e "is not" ? Grazie ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python