Re: [Python] Richiesta chiarimento su SyntaxWarning

2020-01-13 Per discussione Giovanni Porcari


> 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

2020-01-13 Per discussione Lorenzo Buonanno
>
> 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

2020-01-13 Per discussione Giovanni Porcari


> 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

2020-01-13 Per discussione Giovanni Porcari


> 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

2020-01-13 Per discussione Marco Beri
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

2020-01-13 Per discussione Alessandro Dentella
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

2020-01-13 Per discussione Marco Beri
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

2020-01-13 Per discussione
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

2020-01-13 Per discussione Giovanni Porcari


> 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

2020-01-11 Per discussione Daniele Zambelli
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

2020-01-09 Per discussione Carlos Catucci
>
>
> 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

2020-01-09 Per discussione Marco Beri
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

2020-01-09 Per discussione Carpediem

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