La nueva versión de Python 3.0 (Py3K) introduce cambios hacia atrás incompatibles pero leves en comparación con otras actualizaciones de lenguajes de programación como VB, PHP y .NET. Algunos de los principales cambios incluyen la conversión de print a una función, la unificación de cadenas y tipos numéricos, y mejoras en formato, excepciones, clases y módulos. La documentación y ayuda sobre la transición a Python 3.0 se encuentra disponible en la página web de Python Argentina.
2. Python 3.0: Nueva versión del Lenguaje
Levemente incompatible hacia atrás
¡No alarmarse!
Conversión automática: 2to3.py
Modificaciones menores, comparado con:
VB 6.0 a VB.NET
PHP 4 a PHP 5
.NET 1.0 a .NET 2.0 a .NET 3.x
Java 1.x
3. print
La sentencia print pasa a ser función:
print(args, end="n", sep=" ")
Ejemplos:
print "La respuesta es", 2*2 print("La respuesta es", 2*2)
print x, print(x, end=" ") # (no saltar)
print print()
print >>sys.stderr, "fatal error" printprint("fatal error", file=sys.stderr)
(x, y) print((x, y))
print("Hay <", 2**32, ">
posibilidades!", sep="")
4. Cadenas
Unificación str (strings unicode)
Nuevo tipo bytes (datos binarios)
b'datos binarios'
Nuevo Formateo:
"hola {quien}".format(quien="mundo")
Se mantiene formateo con %
5. Números
int => long (se unifican los enteros)
Division flotante: 1/2==0.5, 1//2==1
repr(11./5) devuelve 2.2 en vez de
2.2000000000000002
6. Listas, Diccionarios, Vistas e Iterables
builtin.sorted() y list.sort() no aceptan cmp, usar
key
dict.keys(), dict.items() y dict.values() devuelven
vistas
se elimina dict.iterkeys(), dict.itervalues() y dict.
iteritems()
zip(), map() y filter() devuelven iteradores
range() reemplazado por xrange(), devuelve
iterador
.next() => __next__(), nuevo builtin.next()
8. Clases y metaclases
Nueva sintaxis metaclases: class
MiClase(metaclass=MiMetaclase)
super() mejorado (automágico)
Abstract Base Clases.
Decoradores de Clases.
9. Varios
raw_input() => input()
Comparar tipos "compatibles". Se elimina <> (usar
!=).
Anotaciones: def dividir(a: int, b: int) -> float:
Instrucción nonlocal (variables ni globales ni
locales)
Literales octales, binarios, oct() y bin(): 0666 =>
0o666
Se elimina: apply(), callable(), coerce(), execfile(),
file(), reduce(), reload()
10. Módulos
"Unificación" cPickle, piclke => piclke
StringIO y cStringIO => io
Se elimina: audiodev, Bastion, bsddb185,
exceptions, linuxaudiodev, md5, MimeWriter,
mimify, popen2, rexec, sets, sha, stringold, strop,
sunaudiodev, timing, y xmllib, new, os.tmpnam(),
os.tempnam() y os.tmpfile()
11. Documentación y Ayuda
Python Argentina: http://www.python.org.ar/
Python 3000 en PyAr
PEP 3000 (Propuesta de Mejoras)
Que hay de nuevo en Python 3.0 (inglés)