2012-01-22 16 views
7

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

5

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:

  1. 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 
    
  2. Evitar el uso de range(n), al menos para valores grandes de n. 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's range en Python 2, use xrange(n). Se aplican advertencias similares al diccionario keys(), values() y items() métodos. Todos devuelven listas en Python 2. Utilice los métodos iterkeys(), itervalues() y iteritems() para guardar la memoria.

hay varios otros excelentes respuestas a esta pregunta que cubren algunos otros detalles, tales como unicode apoyo.

+0

Gracias. Probablemente habría cometido ese error sin darme cuenta. – Orcris

5

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.

3

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

1

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).