Tengo un poco de conocimiento de Python 3 (no soy un principiante, pero no soy un experto). Estoy interesado en el desarrollo web, así que quiero usar Django. ¿Cuáles son las diferencias entre las dos versiones de Python? ¿Cómo debo cambiar de 3 a 2.x?¿Cómo aprendo Python 2 si ya conozco Python 3?
Respuesta
Ellos no son tan diferentes. Casi todo lo que aprendiste en Python 3 se transferirá a Python 2. Sugeriría que simplemente te sumerjas. Ocasionalmente verás un mensaje de error, pero la mayoría de las veces se explicarán por sí mismos.
Mi apuesta es que el aprendizaje de Django será mucho más difícil que acostumbrarse a Python 2.
Es posible encontrar la biblioteca six
útil si desea escribir código que es compatible hacia atrás con firmeza. De lo contrario, sólo puedo pensar en dos cosas que podrían ser importantes para saber de antemano a medida que avanza hacia atrás para Python 2:
Evitar el uso de las clases de estilo antiguo. En Python 3, se puede declarar una clase como esta, sin ningún tipo de problema:
class Foo: pass
en Python 2, si lo hace, se obtiene una clase de estilo antiguo, que es probable que no desee. Pero no recibirá ningún mensaje de error al respecto, por lo que pueden surgir errores de herencia sutiles y permanecer ocultos durante mucho tiempo antes de causar problemas. Así que en Python 2, recuerde que debe heredar explícitamente de
object
:class Foo(object): pass
Evitar el uso de
range(n)
, al menos para valores grandes den
. En Python 3,range
devuelve un iterador inteligente, pero en Python 2,range
devuelve una lista real. Para rangos grandes, puede quemar mucha memoria. Para obtener el comportamiento de Python 3'srange
en Python 2, usexrange(n)
. Se aplican advertencias similares al diccionariokeys()
,values()
yitems()
métodos. Todos devuelven listas en Python 2. Utilice los métodositerkeys()
,itervalues()
yiteritems()
para guardar la memoria.
hay varios otros excelentes respuestas a esta pregunta que cubren algunos otros detalles, tales como unicode
apoyo.
Si ya está familiarizado con Python 3, entonces hay casi no hay diferencias tendrá que preocuparse cuando se codifica en Python 2. Las diferencias más visibles por el usuario tienen que ver con los detalles de la declaración print
, que probablemente no utilizará para Django de todos modos.
Por lo tanto, solo escriba el código, y pregunte acerca de cualquier problemas específicos que pueda encontrar.
Otra gran diferencia es cómo Python 3 maneja unicode: todo en Python 3 es una cadena unicode o datos binarios, mientras que en Python 2 se hizo una distinción entre cadenas unicode y cadenas de 8 bits.
La siguiente página tiene mucha más información sobre la diferencia entre Python 2 y 3. http://docs.python.org/release/3.0.1/whatsnew/3.0.html
leen a través de: http://python3porting.com/differences.html
Tenga en cuenta que hay un montón de cosas simplemente retirados de Python 2, al igual que aplicar(), que por lo tanto no tiene que preocuparse.
Además, como lo notó senderle, usa la subclase del objeto (esto también se recomienda en Python 3, posiblemente porque realmente hace la diferencia en Python 2).
- 1. ¿Cómo aprendo C# rápido (er), ya conozco C, Java, C++, etc.?
- 2. código python 2: si python 3 luego sys.exit()
- 3. Nuevo proyecto: Python 2 o Python 3?
- 4. Python 2 y Python 3 __cmp__
- 5. Python 2 vs. Python 3 - formatos urllib
- 6. python 2.xo 3.x
- 7. cómo convertir el código de Python 3 a Python 2?
- 8. Rendimiento: Python 3.x frente a Python 2.x
- 9. Eliminación de clases de Python 3 en Python 2
- 10. Si Python 3 es el pitón más nuevo, ¿por qué todavía está Python 2?
- 11. Ambos Python 2 y 3 en Emacs
- 12. Subclassing builtin types en Python 2 y Python 3
- 13. Python 2 o Python 3 como primer idioma del alumno
- 14. Planteando excepciones cuando ya existe una excepción en Python 3
- 15. Python - Virtualenv, python 3?
- 16. ¿Cómo aprendo Visual C++?
- 17. ¿Cómo se cambia entre python 2 y 3, y viceversa?
- 18. Python PySerial.¿Cómo saber si un puerto ya está abierto?
- 19. Python se extiende con - el uso de super() Python 3 vs Python 2
- 20. Python: __init __() toma exactamente 2 argumentos (3 dados)
- 21. Python Combinatoria, parte 2
- 22. python 3: cómo verificar si un objeto es una función?
- 23. Diferencias en ctypes entre Python 2 y 3
- 24. Nuevo en Python ... Python 3 y Matplotlib
- 25. salmuera incompatibilidad de matrices numpy entre Python 2 y 3
- 26. Python 3 Sintaxis Cambios
- 27. Python 3 string.join() equivalente?
- 28. Escribir un módulo para Python 2.xy 3.x
- 29. Python 2 a 3 bytes/error de cadena
- 30. Quiero usar NumPy/SciPy. ¿Debería usar Python 2 o 3?
Gracias. Probablemente habría cometido ese error sin darme cuenta. – Orcris