Python a fondo

Libro Python a fondo

Autor: Óscar Ramírez Jiménez

Título: Python a fondo.

Subtítulo: Domine el lenguaje del presente y del futuro.

Editorial: Marcombo

Año: 2021

nº páginas: 648

Tiempo estimado de lectura: 60 días

Análisis Resumen del libro Python a fondo

Este libro presenta y enseña muchísimos aspectos de Python, desde los más básicos como los tipos de datos, hasta algunos conceptos muy avanzados como la programación orientada a objetos, la concurrencia o el desarrollo de aplicaciones de escritorio y web.

En este libro se plasma la experiencia que he adquirido desde que comencé a aprender programación (hayá por 2008) hasta hoy, explicando de forma simple, clara y con muchos ejemplos, qué es Python, cómo programar en este lenguaje y por qué considero que es el lenguaje del presente y del futuro.

El libro está pensado tanto para novatos como para avanzados en la programación, se explican conceptos como:

  • Evolución y usos de Python en la actualidad
  • Python frente a otros lenguajes
  • Programación imperativa (funciones, tipos de datos, excepciones, flujos de control, etc)
  • Programación orientada a objetos en Python
  • Manejo de ficheros y de bases de datos (con muchos ejemplos prácticos)
  • Concurrencia en Python (un tema avanzado pero muy poderoso)
  • Cómo crear interfaces de usuario tanto en consola como gráficas unsando tkinter
  • Desarrollo de aplicaciones web con ejemplos en Django

Además cuenta con un repositorio de código con el que descargar el contenido y los ejemplos del libro de forma gratuita y está actualizado a la última versión de Python 3.10

Gracias a su contenido extenso, claro y directo, es uno de los libros referentes de Python en Español tanto en España como en latinoamérica.

Entrevistas sobre Python a fondo

En la siguiente entrevista, el autor (Oscar Ramírez), junto con el Director general de la editorial Marcombo (Jeroni) y el asesor técnico Ferran Fàbregas, presentan el libro, la motivación y muchos otros aspectos muy interesantes.

El canal de Televisión local de Lucena me entrevistó desde una perspectiva más general para hablar del libro en una entrevista tranquila y sosegada para el canal de televisión Videoluc TV en su programa Enreda2.

En la siguiente entrevista hecha con AulaMagna, el autor explica la actual situación de Python y por qué es el lenguaje del presente y del futuro

Índice y contenido de Python a fondo

CAPÍTULO 1 – INTRODUCCIÓN AL LENGUAJE PYTHON
1 Introducción
1.1 Evolución de las versiones de Python
1.2 Características principales de los lenguajes de programación
1.2.1 Generaciones y niveles de abstracción de los lenguajes de programación
1.2.2 Paradigmas
1.2.3 Clasificación de lenguajes según su tipado
1.2.4 Características de Python
1.3 Ámbitos de uso de Python
1.3.1 Programación a nivel de sistema operativo
1.3.2 Aplicaciones con interfaz de usuario
1.3.3 Aplicaciones web e interacción con servicios web
1.3.4 Interacción con servicios de Internet
1.3.5 Gestión de contenido
1.3.6 Aplicaciones científicas y manejo de datos
1.3.7 Inteligencia artificial y Python
1.4 Python Enhancement Proposals (PEP)
1.4.1 Proceso de creación de un PEP
1.5 PEP-8: Guía de estilos
1.5.1 Indentación
1.5.2 Longitud de líneas
1.5.3 Espacios, saltos de línea y líneas en blanco
1.5.4 Otros consejos generales
1.5.5 Comentarios y documentación de código
1.5.6 Convención de nombres
1.5.7 Herramientas para cumplir con la PEP-8
1.6 PEP-20: Zen de Python
1.7 Compañías que usan productos creados en Python
1.8 Posición de Python entre los lenguajes de programación
1.9 Python 2 vs Python 3
1.9.1 str, bytes y Unicode
1.9.2 Comparaciones de tipos no ordenables
1.9.3 Operaciones numéricas diferentes
1.9.4 Iteradores por defecto
1.9.5 Función print
1.9.6 Migrar de Python 2 a Python 3
1.10 Instalación de Python en diferentes sistemas operativos
1.10.1 Instalación en Linux
1.10.2 Instalación en Windows
1.10.3 Instalación en Mac OS X
1.11 Distribuciones de Python
1.11.1 Anaconda
1.11.2 WinPython
1.11.3 Enthought Canopy
1.11.4 ActivePython
1.12 Instalación de librerías y módulos en Python
1.13 Manejo de entornos virtuales
1.14 Intérpretes interactivos (REPL)
1.14.1 Python
1.14.2 IPython
1.14.3 bpython
1.14.4 ptpython
1.14.5 Intérpretes online
1.15 El intérprete de Python
1.15.1 Estructura del intérprete de Python
1.16 Implementaciones de Python
1.16.1 CPython
1.16.2 Jython
1.16.3 PyPy
1.16.4 IronPython
1.17 Desarrollar programas en Python (IDE)
1.17.1 Entornos de desarrollo open source
1.17.2 Entornos de desarrollo de código cerrado
1.17.3 Comentario general sobre IDE
1.18 Primeros programas en Python
1.18.1 Ejecutar programas en el REPL de Python
1.18.2 Usar Jupyter Notebook
1.18.3 Primeros programas ejecutados desde ficheros
CAPÍTULO 2 – VARIABLES Y TIPOS DE DATOS
1 Introducción a los tipos de datos
2 Literales, variables y datos en Python
2.1 Literales
2.2 Variables e identificadores
2.3 Gestión de memoria en Python
2.4 Mutabilidad de variables
3 Tipos booleanos
3.1 Operaciones con booleanos
3.2 Cortocircuito lógico
4 Comparaciones
5 Tipos numéricos
5.1 Operaciones numéricas básicas
5.2 Enteros
5.3 Operaciones a nivel de bits con enteros
5.4 Números de coma flotante
5.5 Números complejos
5.6 Utilizar distintos tipos numéricos
6 Secuencias
6.1 Listas
6.2 Tuplas
6.3 Rangos
6.4 Selección de subsecuencias basadas en índices (slices)
6.5 Operaciones predefinidas para secuencias
7 Secuencias de caracteres
7.1 Construir cadenas de caracteres
7.2 Convertir caracteres a números y viceversa
7.3 Operaciones de búsqueda de caracteres y conteo
7.4 Operaciones relacionadas con el tamaño de letra
7.5 Operaciones de identificación de cadenas
7.6 Operaciones relacionadas con la codificación
7.7 Traducciones, reemplazos y mapeos
7.8 Funciones de manipulación de cadenas: limpiado, división y unión de cadenas
7.9 Funciones de justificado y alineación de cadenas de caracteres
7.10 Formatear cadenas de caracteres
7.11 Diferentes subtipos de cadenas
7.12 Cadenas f-string en profundidad
7.13 Introducción al minilenguaje de formateado de strings
7.14 Función para imprimir caracteres (print)
8 Secuencias binarias
8.1 Qué son los datos binarios
8.2 Tipos bytes y bytearray
8.3 Operaciones con bytes y bytearray
8.4 Cadenas de literales de bytes (byte literals)
9 Conjuntos (set y frozenset)
9.1 Funciones de actualización de conjuntos
9.2 Funciones para operar conjuntos
9.3 Operaciones condicionales para conjuntos
10 Mapas (diccionarios)
10.1 Explorar valores de diccionarios
10.2 Actualizar valores en diccionarios
10.3 Objetos de tipo vista en diccionarios (view objects)
11 Iterables e iteradores
11.1 Operadores para trabajar con iterables
12 Expresiones generadoras
12.1 Inicializar tipos por comprensión
12.2 Inicializar objetos con expresiones generadoras
CAPÍTULO 3 – FUNDAMENTOS DEL LENGUAJE
1 Asignaciones simples y múltiples
1.1 Asignaciones simples
1.2 Asignaciones de múltiples variables
1.3 Asignaciones múltiples
1.4 Asignaciones slicing con *
2 Control de flujo de ejecución
2.1 Control de flujo condicional con las sentencias if, elif y else
2.2 Implementaciones de switch case en Python
2.3 Sentencia if ternaria
3 Flujo de ejecución con bucles
3.1 Analizando bucles while
3.2 Usar bucles con sentencia for
3.3 Control de flujo dentro de bucles: break y continue
4 Operador walrus para asignar
5 Funciones en Python
5.1 Ejemplo de modularización de código
5.2 Parámetros y argumentos en funciones
5.3 Uso de args y kwargs
5.4 Anotaciones y tipado en las funciones
5.5 Funciones recursivas
5.6 Funciones anónimas: expresiones lambda
5.7 Funciones de orden superior
5.8 Funciones dentro de funciones
5.9 Espacio de nombres y contextos
5.10 Memoización
5.11 Decoradores
5.12 Documentación de funciones
5.13 Funciones generadoras
5.14 Corrutinas
5.15 Funciones asíncronas
6 Excepciones
6.1 Controlar el flujo de ejecución con excepciones
6.2 Utilizar las trazas de error
6.3 Excepciones conocidas
6.4 Elevar excepciones de forma manual
6.5 Definición de excepciones propias
CAPÍTULO 4 – PROGRAMACIÓN ORIENTADA A OBJETOS
1 Definición de clase
2 Atributos
2.1 Inicializar clases
2.2 Operar con los atributos
2.3 Atributos de clases
3 Nombres y privacidad en clases
4 Construcción de clases personalizadas
5 Propiedades en clases
6 Métodos
6.1 Métodos de instancia
6.2 Métodos de clase
6.3 Métodos estáticos
7 Métodos mágicos
7.1 Métodos para usar operaciones matemáticas
7.2 Emular contenedores
7.3 Personalizar el acceso a los atributos
7.4 Información sobre funciones definidas por el usuario
8 Controlar el espacio de atributos con slots
9 Duck typing o polimorfismo
10 namedtuple
11 dataclasses
12 Herencia
12.1 Herencia simple y el uso de super
12.2 Herencia múltiple
12.3 Clases Mixin
13 Metaclases y type
13.1 Creación de metaclases propias
14 Entonces, ¿cuándo se deben usar clases?
CAPÍTULO 5 – ESTRUCTURA DE CÓDIGO EN PYTHON
1 Diferentes componentes de un módulo
2 Estructura básica de los paquetes
2.1 Importación de código Python
2.2 Potenciales problemas de usar import *
2.3 Evitar problemas al importar con importaciones cíclicas
2.4 Importar contenido en __init__.py
3 Repositorios de paquetes
3.1 Estructura de un paquete de Python
4 Paquetes disponibles en la librería estándar
CAPÍTULO 6 – PERSISTENCIA DE DATOS EN FICHEROS
1 Ficheros de texto plano
1.1 Trabajar con ficheros sin estructura
1.2 Trabajar con ficheros de anchura definida
1.3 Trabajar con ficheros en formato CSV y TSV
1.4 XML
1.5 HTML
1.6 JSON
1.7 YAML
1.8 Librerías con todo incluido – tablib y pandas
2 Ficheros binarios
2.1 Serialización de objetos Python – pickle
2.2 Persistiendo diccionarios – shelve
3 Compresión y archivación de ficheros
3.1 Comprimir ficheros en archivos ZIP – zipfile
3.2 Archivación y compresión de ficheros – tarfile
CAPÍTULO 7 – PERSISTENCIA EN BASES DE DATOS
1 Interfaz para trabajar con bases de datos DB-API
1.1 Funciones básicas para todos los conectores
1.2 Capa de abstracción de bases de datos en Python – pydal
1.3 Librería para consultas SQL en crudo – records
2 Bases de datos relacionales o SQL
2.1 Conceptos básicos de las bases de datos relacionales
2.2 Sentencias básicas en SQL
2.3 SQLite y Python
2.4 Diferentes bases de datos profesionales
3 Mapeo de objetos relacionales – ORM
3.1 SQLAlchemy ORM
3.2 Peewee ORM
3.3 Pony ORM
3.4 Django models
3.5 ORM asíncrono GINO
4 Bases de datos NoSQL
4.1 Bases de datos clave-valor
4.2 Bases de datos orientadas a documentos
4.3 Bases de datos en tiempo real
4.4 Bases de datos para series temporales
4.5 Bases de datos orientadas a grafos de datos
4.6 Bases de datos columnares
4.7 Bases de datos para búsquedas de texto – Full-text databases
5 Sistemas de clave-valor y cachés en Python – dbm, Memcached y Redis
5.1 Usar dbm en Python
5.2 Memcached en Python
5.3 Usar Redis como base de datos y caché en Python
6 Bases de datos en la nube
6.1 Servicios de bases de datos en la nube
CAPÍTULO 8 – PARALELISMO Y CONCURRENCIA
1 Procesos en Python
1.1 Lanzar procesos externos – subprocess
1.2 Múltiples procesos en Python – multiprocessing
2 Hilos en Python
2.1 GIL en CPython
2.2 Hilos en Python – threading
3 Ejecuciones de hilos y de procesos – concurrent futures
4 Asincronía de entrada/salida – Asynchronous I/O
4.1 AsyncIO en Python
CAPÍTULO 9 – INTERFACES DE USUARIO
1 Interfaz con consola de comandos en Python – CUI
1.1 input y print – E/S estándar
1.2 CLI estándar – argsparse
1.3 Interfaces de usuario basadas en texto
2 Interfaces gráficas de usuario – GUI
3 Tkinter a fondo
3.1 Componentes principales de una aplicación tkinter
3.2 Componentes disponibles
3.3 Disposición y propiedades de elementos en tkinter
3.4 Manejo de eventos en tkinter
3.5 Organización de la aplicación
4 Ejemplos de aplicaciones creadas con tkinter
4.1 Calculadora de porcentajes creada con tkinter
4.2 Analizador de ficheros de texto creado con tkinter
CAPÍTULO 10 – SERVICIOS DE RED Y APLICACIONES WEB
1 Protocolos de Internet y Python
1.1 Transferencia de hipertexto – HTTP y HTTPS
1.2 Transmisión de ficheros – FTP
1.3 Conexiones entre servidores – Telnet
1.4 Conexiones seguras entre servidores – SSH y SFTP
1.5 Correo electrónico – SMTP
2 Desarrollo web
2.1 Participantes en la web
2.2 Trabajando con protocolo HTTP (request-response)
2.3 Estructura de las aplicaciones web en Python
2.4 Servidor simple utilizando http.server
2.5 Frameworks web en Python
3 Desarrollando un blog con Django
3.1 Planteamiento de la aplicación a realizar
3.2 Primeros pasos con Django
3.3 Primera aplicación con Django
3.4 Modelos con Django
3.5 Panel de administración de Django
3.6 Añadiendo contenido por defecto
3.7 Desarrollando la lógica de la aplicación
3.8 Renderizado basado en plantillas
ANEXO A TESTEO Y COBERTURA DE APLICACIONES EN PYTHON

Pepitas de conocimiento a conocer de Python a fondo

En el libro se pueden encontrar pepitas de conocimiento para desarrolladores de todos los niveles. El libro es muy extenso en contenido pero en cada página se aprenden nuevos conceptos constantemente.

Cada capítulo empieza desde un nivel intermedio-bajo pero rápidamente avanza en el contenido hasta terminar explicando conceptos muy avanzados que sorprenderán a cualquier programador avanzado.

Por separar algunos conceptos, a continuación se pueden ver conceptos relevantes para cada nivel y qué podrá aprender cada desarrollador con este libro según su nivel.

Contenido de libro Python para Principiantes

El libro explica ampliamente todos los conceptos fundamentales de Python con especial análisis de:

  • Historia y versiones de Python: explicación de los orígenes, cambios y trayectoria de Python. Además se explica cómo evoluciona el lenguaje usando las PEPs.
  • Primeros pasos en Python: instalar el intérprete, presentación de las distribuciones de Python, manejo de entornos virtuales y los diferentes intérpretes interactivos disponibles (python, ipython, bpython, ptpython y online).
  • Características de Python: es un lenguaje interpretado, fuertemente tipado y de tipado dinámico. En el libro se explican las diferencias y los significados de cada característica comparando con otros lenguajes y tipos.
  • Implementaciones disponibles: se explican las diferentes implementaciones de Python disponibles (CPython, Jython, PyPy y IronPython).
  • Estructura del intérprete: se presenta el intérprete y se estudian sus diferentes partes para comprender mejor cómo se ejecuta el código en Python.
  • Entornos de desarrollo y editores de texto para Python: se hace una amplia exploración de cada IDE (entorno de desarrollo) y editores disponibles para programar en Python, explicando cómo instalarlos, los pros y contras y para qué público están orientados.
  • Creación de scripts en Python: se explica cómo escribir y ejecutar scripts en todas las plataformas.
Python a fondo Basico

Contenido de libro Python para nivel Intermedio

  • Explicación de tipos de datos y variables: se presentan los tipos de datos, métodos disponibles, diferencias entre tipos, mutabilidad de variables, etc. Con muchísimos ejemplos de cada tipo para comprenderlos en profundidad.
  • Programación básica con Python: estudia en profundidad los tipos de datos por defecto, la creación de funciones, argumentos, se estudian en profundidad funciones, argumentos, tipos de argumentos, iteradores, decoradores, contextos, etc.
  • Programación orientada a objetos: explica en profundidad cómo hacer la programación orientada a objetos en Python con conceptos como clases propias, atributos, métodos, herencia simple, herencia múltiple, resolución de herencias, sobreescritura de métodos y un largo etcétera.
  • Programación funcional: muestra conceptos de programación funcional presentes en Python como las funciones de orden superior, la recursión o las funciones lambda.
  • Estructura y creación de paquetes: explicación de cómo componer proyectos correctamente jerarquizados en Python y de cómo crear paquetes para ser publicados en Pypi.
  • Revisión de TODOS los paquetes de la librería estándar disponibles: se nombran y explican brevemente todos y cada uno de los paquetes disponibles de la librería estándar para conocer el potencial de Python sin usar paquetes externos.
Python a fondo para developers intermédios

Contenido de libro Python para nivel Avanzado

  • Manipulación de datos en diferentes formatos: se explica cómo hacer manipulaciones de datos con Python en ficheros. Tanto en texto plano, con formato tabulado (CSV, TSV, HTML, YAML, JSON, etc), como de ancho fijo. Explicando diferentes librerías para usarlos.
  • Serialización, archivado y compresión de ficheros: se muestra cómo manipular la serialización de objetos (pickle), compresión y archivado de ficheros en Python.
  • Bases de datos y Python: describe las diferentes bases de datos (SQL y noSQL) disponibles en el mercado, diferencias y comparaciones entre ellas y cómo se puede interactuar con ellas desde Python.
  • ORMs y ODMs en Python: muestra los diferentes ORMs (relacionales) disponibles para Python, con ejemplos prácticos y diferentes formas de interactuar con bases de datos noSQL.
  • Concurrencia en Python y cómo gestionar el GIL: se explican las diferentes técnicas de concurrencia (threading, multiprocessing y async) disponibles en Python haciendo un estudio pormenorizado de pros y contras con ejemplos.
  • Interfaces de usuario y tkinter en Python: se explican los diferentes tipos interfaces de usuario disponibles en Python y se entra en profundidad en la creación de aplicaciones con interfaz tkinter (con ejemplo práctico).
  • Tecnologías de internet: se explican la mayoría de protocolos más utilizados en Python (con ejemplos de cada uno) como pueden ser http/s, ftp, smtp (email), ssh, telnet, etc.
  • Programación web: se explican las diferentes partes de la programación web, estructuras de servidores y aplicaciones python, y se hace un ejemplo paso a paso de la creación de una aplicación en Django mostrando django admin, templates, modelos de django, ORM de django y mucho más.
  • Testeo y cobertura en Python: en el anexo al libro, se añaden recursos para testear y conocer la cobertura de aplicaciones en Python.
Python a fondo para developers avanzados

Ejemplos de Python en todo el libro

El libro cuenta con una gran cantidad de ejemplos repartidos por todo el libro, permitiendo afianzar los conceptos que se explican.

Adicionalmente, todo el código está en el repositorio de código: https://github.com/Marcombo/python-a-fondo

Sobre el autor de Python a fondo

El autor de Python a fondo es Óscar Ramírez Jiménez (elpythonista y autor de esta web).

Oscar Ramirez autor de Python a fondo y elpythonista

Es ingeniero técnico e ingeniero en Informática por la universidad de Málaga, lleva trabajando en desarrollo de software profesional desde 2013 en diferentes empresas de renombre internacional.

Óscar ha dado charlas en diferentes conferencias como en la semana cultural de la Universidad de Málaga, Codemotion17 o PyConEs17 hablando sobre robótica, ingeniería informática y aplicaciones web en tiempo real.

Es un gran amante del desarrollo y el software libre y también ha contribuido en proyectos de software libre a nivel internacional como en Apertium (Google SOC) o en Django.

Dónde comprar y descargar el libro Python a fondo

Actualmente el libro se encuentra disponible en preventa en la página oficial de la editorial Marcombo. La fecha oficial del lanzamiento es el día 15 de febrero de 2021.

¡Pero muy pronto estará disponible en diferentes canales para la venta en libro físico como en ebook como Amazon, La Casa del Libro, Fnac, Gandía, etc. Tanto en España como en Latinoamérica!


Compartir

1 respuesta