Esta pregunta me la han hecho varias personas y en general puedo decirte que Python es, a estos días, mi lenguaje de programación favorito. En pocas palabras la respuesta a la pregunta ¿Porqué decidí aprender Python? tiene que ver con mi trabajo princial como SysAdmin de entornos Linux, Python está instalado por default en el 100% de los servidores que administro, en la PC de escritorio de la oficina y en la laptop que uso (con Linux Mint), no uso Windows salvo cuando es inevitable y lo hago desde una máquina virtual cuando es necesario.
Por qué decidí aprender Python
Python hace mi trabajo mas sencillo y luego de usarlo un tiempo descubrí Djando un framewrok que permite hacer una aplicación o un script de CLI rápidamente y da acceso a bases de datos que puedo programar y tenerlo listo minutos, también me migrar de un servidor a otro sin preocuparme de versiones, soporte de librerias, etc. gracias a los ambientes virtuales (virtual environtment) que se pueden crear con Python.
Python 3 el que más uso, se que mucha gente prefiere la versión 2 pero está por perder soporte, RedHat estará migrando a Python 3 en REHL 8 como su versión por default, Ubuntu Server ya lo hiso un par de años atras y en general creo que es más cómodo Python 3. Otra razón es que Django dejó de soportar Python 2 desde la versión 1.11 así que trabajar con la versión 3 para mi tiene sentido.
Python me gusta por que es un lenguaje que busca aplicar el sentido común en las instrucciones, una que al principio me confundía era el if implícito en una asignación de un valor a una variable. Por ejemplo:
variable = '/una/ruta' if response.POST.get["archivo"] else ''
Esta línea de código podría representarse en PHP como esto:
<?php
variable = '';
if( isset($_POST['archivo']) ) {
variable = '/una/ruta';
}
?>
En los dos casos vas a obtener el mismo resultado, pero me parece mas descriptivo decir que: asignas ‘/una/ruta’ a la ‘variable’ si recibes un valor en «archivo» y sino asignas una cadena vacía. Bien esto lo puedes decir en una línea de código en Python y es bastante sencillo de leer.
Con Django también aplica este tipo de código con «sentido común» cuando trabajas con los modelos, que son las representaciones de una base de datos (cual? la que quieras: postgreSQL, mysql, sqlite3, oracle, el código no cambia) y si tienes tablas con relaciones no te tienes que preocupar por los joins. Por ejemplo si tienes una tabla de usuarios y un campo departamento al que el usuario pertenece y ese departamento (en otra tabla) tiene los campos descripción y nivel de seguridad, etc.
+--------------+ +----------------+ | Usuario | | Departamento | +--------------+ +----------------+ | username | +--| num_depto | | nombre | | | descripcion | | email | | | nivelSeguridad | | departamento |>-+ | nombre | | ... | | ... | +--------------+ +----------------+
Para acceder a los datos del usuario puedes que poner:
#por ejemplo para buscar el usuario lmedina
usuario = user.Objects.get(username='lmedina' )
print( usuario.nombre )
print( usuario.email )
Para acceder al departamento, que es una relación o «ForeignKey» de otra tabla, no necesito preocuparme de la relación o hacer una sentencia SQL con un join, ni ver que registros tienen para hacer la condición correcta, etc. Solo tengo que poner el siguiente código.
print( usuario.departamento.nombre )
print( usuario.departamento.descripción )
print( usuario.departamento.nivelSeguridad )
Para acceder a los datos del departamento relacionados al usuario «lmedina» solo agrego un punto y el dato de la tabla «departamento» que necesito. Todo el tema del join o la relación lo gestionó Django en automático cuando se llamó a la función user.Objects.get(username=’lmedina’ )
Con estos sencillos ejemplo te puedo decir que Python y Django ofrecen unas ventajas sumamente interesantes sobre otros lenguajes y que, al menos para mi, tienen mucho sentido en mi trabajo y por estos sencillos ejemplos, mi vida diaria en mi trabajo es mucho mas sencilla.
Espero que te pueda servir y te animes a aprender Python o Django.