Depende de la formación que tengas. Lo que he visto difícil de aprender/entender por las personas que empiezan con Python pero no tienen formación en estructuras de datos (por no estar en una carrera de informática) son los errores provenientes del uso de estructuras inadecuadas para los datos. Como el lenguaje y las bibliotecas te permiten hacer cosas avanzadas con poco código, es fácil avanzar. Pero una vez que aparecen problemas éstos se relacionan con situaciones y procesos que sucedían tras bambalinas.

Los errores en sí mismos no son amigables. A veces dice error, otras, excepción. ¿Qué es una excepción?¿Por qué no es un error o un problema? ¿Qué son todas las cosas que muestra la traza de la pila de ejecución (stack trace)? Si el error es que le sobró una comilla al archivo .csv, ¿por qué el error es tan complejo y con términos especializados? Eso es a mi juicio lo más complicado de entender para quienes están comenzando.

En temáticas intermedias entender que las funciones son ciudadanas de primera clase, las funciones lambda, el uso de decoradores, o que los nombres de las variables son como etiquetas que se ponen sobre los objetos (¡a = b no implica que a sea una copia de b!). Temáticas avanzadas que me parecen complejas incluyen el código asíncrono y las corutinas.

Algo que también me parece díficil es el uso de numpy para acceder a distintas partes / cortes de las matrices que tengas. Es una biblioteca poderosa pero complicada de tomar y manipular en un comienzo. Como extensión, el uso del parámetro “axis” en pandas, scikit-learn, numpy, scipy, etc., siempre me ha parecido confuso y tengo que estar revisando y probando cada vez que lo utilizo.

Finalmente, uno de los aspectos complicados de Python es que tiene un ecosistema rico e interconectado pero individualista en el diseño de las APIs (es decir, nombres de funciones, manera de ejecutar procesos, nombres y cantidades de parámetros, etc.). Este diseño varía de un módulo a otro. Las convenciones y preferencias son diferentes. Eso no es malo, pero es difícil de asemejar para alguien que está aprendiendo.

De todos modos, Yo 💚 Python