[Python] Python 2.7 & 3 - afraid and terrified (?)

Giampaolo Rodola' g.rodola a gmail.com
Lun 14 Lug 2014 17:23:07 CEST


2014-07-14 17:06 GMT+02:00 Manlio Perillo <manlio.perillo a gmail.com>:

> 2014-07-14 16:43 GMT+02:00 Giampaolo Rodola' <g.rodola a gmail.com>:
>
> > [...]
>
>>    > [...]
>>>
>>>>  Non è un caso che proprio i progetti fortemente basati sull'I/O come
>>>> MySQL-python, Twisted e gevent sono quelli che ancora latitano perchè
>>>> (esperienza personale fatta con pyftpdlib) far coesistere due tipi che
>>>> prima erano intercambiabili e di colpo non lo sono più, specialmente in
>>>> quel tipo di applicazioni, è veramente un casino.
>>>>
>>>
>>> Hey, aspetta un attimo.
>>> str e unicode non sono **mai** stati intercambiabili, a meno di
>>> applicazioni affette da gravi bug logici e che dipendevano dall'encoding di
>>> default.
>>>
>>> > [...]
>>>
>>
>> Mi riferisco a:
>>
>>  >>> u"a" + "b"
>> u'ab'
>> >>> "a" == u"a"
>> True
>>
>>
>>
> In [1]: u"à" == "à"
> /usr/bin/ipython2:1: UnicodeWarning: Unicode equal comparison failed to
> convert both arguments to Unicode - interpreting them as being unequal
>   #!/usr/bin/python2
> Out[1]: False
>

Ecco, classico esempio di codice che funziona "il più delle volte" ma
nasconde un baco e che Python 3 ha risolto lanciando TypeError.  E'
esattamente a questo che mi riferivo: sono intercambiabili nel senso che li
puoi mischiare (e come in questo caso ottenere risultati errati) e anche
formattarli entrambi (cosa che non puoi fare coi bytes in python 3 e che è
quello che crea maggiormente problemi alla gente di twisted e mercurial).

-- 
Giampaolo - http://grodola.blogspot.com
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20140714/d6fc0550/attachment.html>


Maggiori informazioni sulla lista Python