Skip to content

manuelver/curso-python

Repository files navigation

Cursos de python 🐍

Este repositorio contiene los apuntes tomados en diversos cursos de python reflejados en la siguiente tabla:

Nombre del curso
y ubicación
Nivel Duración
de vídeos
Duración
personal aprox.
Fuente original
HolaMundo Bajo 5 horas 15 horas Aprende python ahora!
Python total Intermedio 30 horas 200 horas Escuela Directa
Python y ChatGPT Intermedio 2 horas 15 horas Escuela Directa, ChapGPT
30 days of python Intermedio --- 25 horas Repo Asabeneh
Cajón de sastre Intermedio --- continua Personal
scripts-hacking-etico Avanzado --- 5 horas ChapGPT, Canal Telegram
Python ofensivo Avanzado 35 horas 100 horas hack4u

Las prácticas y ejercicios aquí contenidos son los que hice mediante los cursos mencionados o por investigación propia, con mucho café para combatir el insomnio. Realmente, los apuntes no fueron pensados para compartirlos, por ello pueden tener lagunas de información o contenido adicional respecto al curso, ya que se redactaron para recordar procedimientos y conceptos que EMHO me parecieron relevantes. Teniendo estos documentos tan completos y entendiendo que el conocimiento debe ser libre, se decidió compartirlos. Si encuentras cualquier error puedes abrir una issue o contactar conmigo.

Si te parece útil este documento puedes agradecerlo a través de las vías de contacto de la web o invítandome a un café ☕️

Recuerda,

"Quien se corta su propia leña se calienta dos veces"


Información sobre python

Qué es python según chatGPT 🤖 Python es un lenguaje de programación interpretado y de alto nivel. Python se destaca por su sintaxis clara y legible, lo que lo hace muy accesible tanto para principiantes como para programadores experimentados.

Una de las características distintivas de Python es su enfoque en la legibilidad del código, lo que se conoce como el principio "bello es mejor que feo" (beautiful is better than ugly). Esto se logra mediante el uso de una sintaxis clara y estructurada que facilita la comprensión y el mantenimiento del código.

Python es un lenguaje multipropósito, lo que significa que se puede utilizar para una amplia variedad de aplicaciones, como desarrollo web, análisis de datos, inteligencia artificial, automatización de tareas, desarrollo de juegos y más. Tiene una amplia biblioteca estándar que proporciona módulos y funciones para realizar diversas tareas comunes, lo que facilita el desarrollo de aplicaciones sin tener que escribir todo desde cero.

Una de las razones por las que Python ha ganado popularidad es su comunidad activa y su ecosistema de paquetes. Existen numerosas bibliotecas y marcos de trabajo desarrollados por la comunidad que amplían las capacidades de Python en diferentes áreas, como Django para desarrollo web, NumPy y pandas para análisis de datos, TensorFlow y PyTorch para aprendizaje automático, entre otros.

Además, Python es conocido por ser un lenguaje fácil de aprender y utilizar. Su sintaxis intuitiva y legible permite a los programadores escribir código de manera más rápida y eficiente, lo que reduce el tiempo de desarrollo y facilita la colaboración en proyectos.

En resumen, Python es un lenguaje de programación de alto nivel, interpretado y fácil de aprender que se utiliza ampliamente en una variedad de aplicaciones, desde desarrollo web hasta análisis de datos e inteligencia artificial. Su enfoque en la legibilidad del código y su comunidad activa lo convierten en una elección popular entre los programadores.

Historia de python 🏛️ Python fue creado a finales de los años ochenta por [Guido van Rossum](https://es.wikipedia.org/wiki/Guido_van_Rossum) en Stichting Mathematisch Centrum (CWI), en los Países Bajos, como un sucesor del lenguaje de programación ABC, capaz de manejar excepciones e interactuar con el sistema operativo Amoeba.

El nombre del lenguaje proviene de la afición de su creador por los humoristas británicos Monty Python.

Guido van Rossum es el principal autor de Python, y su continuo rol central en decidir la dirección de Python es reconocido, refiriéndose a él como Benevolente Dictador Vitalicio; sin embargo el 12 de julio de 2018 declinó de dicha situación de honor sin dejar un sucesor o sucesora y con una declaración altisonante:8

"Entonces, ¿qué van a hacer todos ustedes? ¿Crear una democracia? ¿Anarquía? ¿Una dictadura? ¿Una federación?"

Guido van Rossum

En 2019, Python fue el lenguaje de programación más popular en GitHub, superando a Java, el segundo lenguaje más popular, por más de 1 millón de repositorios.

PEP 20 - Zen de Python 📄 El Zen de Python es una colección de 20 principios de software que influyen en el diseño del Lenguaje de Programación Python, de los cuales 19 fueron escritos por Tim Peter en junio de 1999. El texto es distribuido como dominio público:
Bello es mejor que feo.
Explícito es mejor que implícito.
Simple es mejor que complejo.
Complejo es mejor que complicado.
Plano es mejor que anidado.
Espaciado es mejor que denso.
La legibilidad es importante.
Los casos especiales no son lo suficientemente especiales como para romper las reglas.
Sin embargo la practicidad le gana a la pureza.
Los errores nunca deberían pasar silenciosamente.
A menos que se silencien explícitamente.
Frente a la ambigüedad, evitar la tentación de adivinar.
Debería haber una, y preferiblemente solo una, manera obvia de hacerlo.
A pesar de que eso no sea obvio al principio a menos que seas Holandés.
Ahora es mejor que nunca.
A pesar de que nunca es muchas veces mejor que *ahora* mismo.
Si la implementación es difícil de explicar, es una mala idea.
Si la implementación es fácil de explicar, puede que sea una buena idea.
Los espacios de nombres son una gran idea, ¡tengamos más de esos!
Últimas versiones 🔄 Python 2.7.x (última versión de la serie Python 2.x) fue oficialmente descontinuado el 1 de enero de 2020 (paso inicialmente planeado para 2015), por lo que ya no se publicarán parches de seguridad y otras mejoras para él. Con el final del ciclo de vida de Python 2, solo tienen soporte la rama Python 3.6.x y posteriores.

Con Python 3.5 llegaría el soporte incluido para entrada/salida asíncrona a través de la biblioteca asyncio, orientada a aplicaciones que requieren alto rendimiento de código concurrente, como servidores web, bibliotecas de conexión de bases de datos y colas de tareas distribuidas.

En la actualidad, Python se aplica en los campos de inteligencia artificial y machine learning.

Tabla de Usos de Python y sus Bibliotecas/módulos 📚
Uso principal Bibliotecas/módulos utilizados
Acceso a bases de datos
SQLAlchemy
psycopg2
mysql-connector-python
pymongo
MongoDB
Redis
Cassandra
Análisis y manipulación de datos geoespaciales
GeoPandas
Shapely
Folium
Análisis y visualización de datos
Seaborn
Plotly
Bokeh
Dash
Beautiful Soup
Análisis de texto y procesamiento del lenguaje natural
NLTK
spaCy
Gensim
TextBlob
Transformers
Aplicaciones de escritorio
PyQt
Tkinter
wxPython
Kivy
Aprendizaje automático
TensorFlow
PyTorch
Keras
scikit-learn
NLTK
Automatización de pruebas web
Selenium
Playwright
Splinter
Automatización de tareas de infraestructura
Ansible
Fabric
Paramiko
Boto
Automatización de tareas de sistema
Fabric
Invoke
PyAutoGUI
Selenium
Automatización y scripting
os
subprocess
shutil
pathlib
argparse
Cálculos científicos y numéricos
NumPy
SciPy
SymPy
pandas
Ciencia de datos
NumPy
Pandas
Matplotlib
SciPy
scikit-learn
Creación de interfaces gráficas de usuario
PyQt
Tkinter
wxPython
PySide
Desarrollo de aplicaciones de escritorio con GUI
PyQt
Tkinter
wxPython
PySide
Toga
Desarrollo de aplicaciones móviles
Kivy
PyQt
BeeWare
PySide
Desarrollo de aplicaciones web
Django
Flask
Pyramid
FastAPI
Requests
Desarrollo de aplicaciones web con JavaScript
Flask
Django
Tornado
Bottle
Desarrollo de chatbots
NLTK
spaCy
Rasa
ChatterBot
Desarrollo de juegos
Pygame
Panda3D
Arcade
Pyglet
Integración con servicios en la nube
Boto3
Google Cloud Client Library
Azure SDK for Python
Manipulación de datos en formato CSV
csv
Pandas
NumPy
Manipulación de archivos PDF
PyPDF2
pdfminer
PyMuPDF
Procesamiento de señales y audio
Librosa
Soundfile
PyDub
Procesamiento de datos en grandes escalas
Dask
Apache Spark
Cython
Numba
Procesamiento de imágenes y visión por computadora
OpenCV
Pillow
scikit-image
Procesamiento de lenguaje natural en idioma español
spaCy
Pattern
Freeling
Pruebas de software
unittest
pytest
nose
Selenium
Tabla de comparación con otros lenguajes de programación 🤔
Característica Python Java C++ JavaScript
Paradigma Multiparadigma Orientado a objetos, estructurado Multiparadigma Multiparadigma
Tipado Dinámico Estático Estático Dinámico
Sintaxis Concisa y legible Verbosa Compleja Flexible
Uso principal Desarrollo web, ciencia de datos, automatización Desarrollo de aplicaciones empresariales Desarrollo de sistemas, videojuegos Desarrollo web, aplicaciones interactivas
Bibliotecas Amplia variedad Amplia variedad Amplia variedad Amplia variedad
Orientación a objetos
Rendimiento Moderado Alto Alto Moderado
Comunidad y soporte Gran comunidad, abundante documentación Gran comunidad, abundante documentación Gran comunidad, abundante documentación Gran comunidad, abundante documentación
Curva de aprendizaje Baja Moderada Alta Baja

Esta tabla solo proporciona una comparación general entre los lenguajes y que cada uno tiene sus propias fortalezas y áreas de aplicación específicas.



Licencia 📄




Agradecimientos 🎁

Por supuesto, quiero agradecer a Federico Garay, a Nicolás Schürmann (¡Cuidao con el teclado que se gasta!) y a Marcelo Vázquez por los cursos en concreto que realice con ellos, fueron mi despegue. También mi más sincero agradecimiento a todos los contenidos libres de webs, canales de RRSS, repositorios de código, etc.

Y por último, a todos los compas que me han apoyado en este camino.

Solo no puedes, con amigos sí. 🤝


Invítame a un café ☕️

https://www.buymeacoffee.com/manuelver




Manu 😊