Python 3.0 - Novità e cause dell'incompatibilità

fojeaf

Utente Silver
3 Marzo 2008
235
8
0
95
Python 3.0 ha portato numerose novità, rendendosi incompatibile con le versioni precedenti.
Qui un sunto delle novità:

- print nn è più una keyword classica, ma è stato sostiuito con una funzione print(). Prende come argomenti ciò che va stampato, tuttavia ha anche altre utili cose, come l'argomento sep, che ci consente di sciegliere come unire gli argomenti listati:
Codice:
print("ciao",55,"s",sep="/")

>>> ciao/55/s #in 2.5 le virgole venivano semplicemente rimosse ed il tutto unito
oppure possiamo specificare un argomento end=" " ad esempio, ciò farà sì che al posto del \n alla fine del print verrà inseirto il carattere assegnato ad end

- range() ora si comporta come xrange()

- Gli operatori di confronto sono stati modificati finalmente operazioni come 1 < '' o simili (ossia i confronti fra tipi nn confrontabili dal punto di vista naturale) ora lanciano un TypeError

-è stato rimosso lo statement cmp()

-long/ è stato rimosso. il tipo long nn esiste +, ora esiste solo il tipo int, che però è in grado anche di comportarsi come un long

-nn è + necessario scrivere 1.0/2, ora 1/2 ritorna il numero float, per avere ancora i numeri troncati come in passato bisogna ora fare 1//2

-sys.maxint è stato giustamente rimosso in quanto nn viene + utilizzato

-grazie a dio repr nn includerà + la L alla fine di un intero lungo. per avere ancora la L usare str()

- le stringhe sono ora tutte di tipo unicode, che ora è chiamato col classico str, mentre le vecchie stringhe 8-bit e gli altri dati binari usano bytes(). Ora inoltre il tentare un mix tra i due lancia un TypeError

-ora nn useremo più u".." per gli unicode, ma b"..." per i binary data

-per fare il mix possiamo usare le conversioni, quindi o str.encode() o bytes.decode()

-bytes è immutabile, come str, ma abbiamo il tipo bytearray

-i caratteri non ASCII sono ora ammessi negli identificatori

-una nuova reserved word è nonlocal. con nonlocal x assegnamo x come variabile nn locale, ma nemmeno globale, insomma qualcosa in mezzo...

-True False e None sono state rese reserved

-except er,var ora è diventato except er as var

-rimosso <> (ora c'è solo != )

-next() è stato trasformato in __next__()

-raw_input ora si chiamerà input, il vecchio input è eval(input())

-rimosso file() ora si usa solo open()

altri cambiamenti erano già presenti nella 2.6

Ci sono anche cambiamenti nelle librrie, ad es md5 è stata rimossa (basta e avanza hashlib).
Alcune librerie sono state raggruppate:
dbm (anydbm, dbhash, dbm, dumbdbm, gdbm, whichdb).
html (HTMLParser, htmlentitydefs).
http (httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib).
tkinter (all Tkinter-related modules except turtle).
urllib (urllib, urllib2, urlparse, robotparse).
xmlrpc (xmlrpclib, DocXMLRPCServer, SimpleXMLRPCServer).

Sarà inoltre rimosso dopo la 3.1 la formattazione delle stringhe con %

insomma, sono d'accordo su molti cambiamenti, meno su altri (mi piaceva scrivere raw_input, e mi piaceva formattare con %)

Queste sono solo alcuni cambiamenti, quelli che possono dare più problemi per l'abitudine dell'utilizzo.
 
RE: Python 3.0 - Novità e cause dell'incompatibilita&grave

Davvero belli i cambiamenti, appena un po di moduli che mi servono diventano compatibili con Python 3 ci passo.
 
solo che nn so, dove hanno unito i moduli in uno farò un po' di fatica ad abituarmi... ma sostanzialmente sono uone modifiche, ed esiste il software 2to3 che converte le cose + semplici ossia
print a print()
raw_input a input
long a int
unicode a string
next a __next__
 
RE: Python 3.0 - Novità e cause dell'incompatibilita&grave

Ottima idea, dato che è una una risorsa globalmente utile ai pythoniani stiko :)

@Malex: se hai voglia puoi anche ordinarlo meglio, simil elenco:

-Keyword/Caratteristica in breve Modificata : Descrizione accurata.

farlo un po' più carino e consultabile insomma :D
 
RE: Python 3.0 - Novità e cause dell'incompatibilita&grave

Bello! Posti nteressante. Peccato che tutti le mie GUI non siano compatibili.... Mi sa che per un po' resterò indietro...
 
RE: Python 3.0 - Novità e cause dell'incompatibilita&grave

HackLife ha detto:
Bello! Posti nteressante. Peccato che tutti le mie GUI non siano compatibili.... Mi sa che per un po' resterò indietro...

io invece nn ho voglia di convertire tutti i miei script....




ora è + leggibile?