(http://www.vitaliypodoba.com/wp-content/uploads/2014/05/python2_vs_python3.jpg)
Ultimamente se ha visto a Python 3.x con mayor fuerza, y muchos se preguntan cuales son las diferencias entre uno y otro en cuanto a la sintaxys.
Las diferencias no son muchos, solo se ven en el print y en los input
Python 2.x: #print es una palabra clave del lenguaje seguido de lo que vaya a mostrar
print "hola mundo"
#con la función input() obtenemos datos numéricos a través del teclado(de
#tipo int)
num=input("introduce un numero")
print num
#con la función raw_input() obtenemos una cadena de texto tecleada por el
#usuario (de tipo string)
name=raw_input("introduce tu nombre")
print name
Python 3.x:#como veis print pasa a ser una función, por eso se usan "()"
print("hola mundo")
#con la funcion input() obtenemos una cadena de texto tecleada
#por el usuario (equivalente a raw_input() de python 2.x)
name=input("introduce tu nombre")
print name
#en python 3 no existe ninguna función para obtener datos numéricos a
#través del teclado, la solución es obtener un número como una cadena de texto
#y después convertirlo en un número entero con la función int():
num=int(input("introduce un numero"))
La función int, convierte un número en formato de texto como "5" en un entero como 5, entonces lo que hacemos es convertir el resultado de input() en un entero, seria el equivalente a un input() en python 2.x.
También existen módulos y funciones que no son compatibles como la función "reduce" que ha sido eliminada ya que la comunidad python alega que produce código ilegible.
Fuente: aprendepythonvolando
Antrax buena aportación, hubo algo que me gusto mucho, fué que se puede importar en python 2.x un módulo para utilizar "print" como función, como si se tratara de python 3.x
from __future__ import print_function
print("hola","mundo",end="\n",sep="//")
y poder utilizar esto en python 2.x esta fenomenal.