Curso: Introducción a python3
Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis que favorezca un código legible.
Se trata de un lenguaje de programación multiparadigma, ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional. Es un lenguaje interpretado, usa tipado dinámico y es multiplataforma.
Los siguientes contenidos forman parte de un curso que he impartido para OpenWebinars en mayo de 2017.
Puedes obtener todo el contenido del curso en el repositorio GitHub. Todas las observaciones, mejoras y sugerencias son bienvenidas.
Unidades
Introducción
- Introducción a python
- Python2 us python3
- Instalación de python3
- Instalación en linux debian/Ubuntu
- Instalación en otras distribuciones linux
- Instalación en Windows
- Instalación en Mac
- Entornos de desarrollos y editores de texto
- IDE python
- Editores de textos
- IDE us Editores de texto
- Características de los editores de textos
- Mi primer programa en python3
- Uso del interprete
- Escribimos un programa
- Ejecución de programas usando shebang
- Guía de estilo
Estructura del lenguaje
- Estructura del programa
- Estructura de programa
- Los comentarios
- Palabras reservadas
- Ejemplo
- Funciones y constantes predefinidas
- Funciones predefinidas
- Algunos ejemplos de funciones
- Constantes predefinidas: False,True,None, …
- Ayuda, función help()
- Datos
- Literales, variables y expresiones
- Definición, borrado y ámbito de variables
- Operadores. Precedencia de operadores
- Función eval()
- Tipos de datos
- Clasificación de tipos de datos
- Función type()
- Función isistance()
- Trabajando con variables
- ¿Qué es el tipado dinámico?
- Objetos inmutables y mutables
- Función id()
- Operadores de identidad
- Operadores de asignación
- Asignación múltiple
- Entrada y salida estándar
- Función input
- Función print
- Formateando cadenas de caracteres
- Función format()
Tipos de datos numéricos
- Tipo de datos numéricos
- Enteros
- Reales
- Complejos
- Operadores aritmético
- Funciones predefinidas que trabajan con números
- Operadores a nivel de bit
- Conversión de tipos
- Tipo de dato booleanos
- Tipo booleano
- ¿Qué valores se interpretan como FALSO?
- Operadores booleanos
- Operadores de comparación
- Funciones all() y any()
-
Ejercicios de programas sencillos
Estructuras de control
- Estructura de control: Alternativas
- Alternativas simples
- Alternativas dobles
- Alternativas múltiples
- Expresión reducida del if
- Estructura de control: Repetitivas
- while
- for
- Instrucciones break, continue y pass
- Recorriendo varias secuencias. Función zip()
-
Tipos de datos secuencia
- Tipo de datos secuencia
- Enumeración de los tipos secuencias
- Características principales de las secuencias
- Tipo de datos secuencia: listas
- Construcción de una lista
- Operaciones básicas con listas
- Las listas son mutables. ¿Cómo se copian las listas?
- Listas multidimensionales
- Métodos principales de listas
- Métodos de inserción: append, extend, insert
- Métodos de eliminación: pop, remove
- Métodos de ordenación: reverse, sort,
- Métodos de búsqueda: count, index
- Método de copia: copy
- Operaciones avanzadas con secuencias
- Función map
- Función filter
- Función reduce
- list comprehension
- Tipo de datos secuencia: Tuplas
- Construcción de una tupla
- Empaquetado y desempaquetado de tuplas
- Operaciones básicas con tuplas
- Las tuplas son inmutables
- Métodos principales
- Tipo de datos secuencia: Rangos
- Definición de un rango. Constructor range
- Recorrido de un rango
- Operaciones básicas con range
- Codificación de caracteres
- Introducción a la codificación de caracteres
- La codificación de caracteres en python3
- Funciones chr() y ord()
- Tipo de datos cadenas de caracteres
- Definición de cadenas. Constructor str
- Operaciones básicas con listas
- Las cadenas son inmutables
- Comparación de cadenas
- Funciones repr, ascii, bin
- Métodos principales de cadenas
- Métodos de formato
- Métodos de búsqueda
- Métodos de validación
- Métodos de sustitución
- Métodos de unión y división
- Tipo de datos binarios: bytes, bytearray
- Definición de bytes. Constructor bytes
- Definición de bytearray. Constructor bytearray
- Operaciones básicas con bytes y bytearray
- Los bytes son inmutables, los bytearray son inmutables
- Métodos de bytes y bytearray
- Métodos encode(), decode()
- Tipo de datos conjuntos: set, frozenset
- Definición de conjuntos. Constructor set
- Definición de frozenset. Constructor frozenset
- Operaciones básicas con set y frozenset
- Los set son inmutables, los frozenset son mutables
- Métodos principales
- Tipo de datos iterador y generador
- Iteradores
- Función next(), reversed()
- Generadores
Tipos de datos mapas
- Tipo de datos mapa: diccionario
- Definición de diccionarios. Constructor dict
- Operaciones básicas con diccionarios
- Los diccionarios son tipos mutables
- Métodos principales de diccionarios
- Métodos de eliminación: clear
- Métodos de agregado y creación: copy, dict.fromkeys, update, setdefault
- Métodos de retorno: get, pop, popitem, items, keys, values
- El tipo de datos dictviews
- Recorridos de diccionarios
-
Trabajar con ficheros
- Lectura y escritura de ficheros de textos
- Función open()
- Modos de acceso
- Codificación de caracteres
- Objeto fichero
- Metodos principales
- Recorrido de ficheros
- Gestionar ficheros CSV
- Módulo csv
- Leer ficheros CSV
- Escribir ficheros CSV
- Gestionar ficheros json
- Módulo json
- Leer ficheros json
- Escribir ficheros json
Errores y Excepciones
- Excepciones
- Errores sintácticos y errores de ejecución
- Manejando excepciones. try, except, else, finally
- Obteniendo información de las excpciones
- Propagando excepciones. raise
Módulos, paquetes y namespaces
- Módulos y paquetes
- Módulos, paquetes
- Ejecutando módulos como scripts
- Importando módulos: import
- Namespace y alias
- Importando elementos de un módulo: from…import
- Importando módulos desde paquetes
- Función dir()
- ¿Donde se encuentran los módulos?
- Módulos estándares: módulos de sistema
- Módulo os
- Ejecutar comandos del sistema operativo. Módulo subprocess
- Módulo shutils
- Módulos sys
- Ejecución de scripts con argumentos
- Módulos estándares: módulos matemáticos
- Módulo math
- Módulo fractions
- Módulo statistics
- Módulo random
- Módulos estándares: módulos de hora y fechas
- Módulo time
- Módulo datetime
- Módulo calendar
- Instalación de módulos
- PyPI y pip
- Instalación de módulos python
- Creando entornos virtuales con
virtualenv
- Creando entornos virtuales con
venv
- Instalando paquetes en nuestro entorno virtual
Programación estructurada y modular
- Introducción a las funciones
- Introducción a la programación estructurada y modular
- Definición de funciones
- Ámbito de variables. Sentencia global
- Parámetros formales y reales
- Paso de parámetro por valor o por referencia
- Llamadas a una función
- Conceptos avanzados sobre funciones
- Tipos de argumentos: posicionales o keyword
- Parámetro *
- Argumentos arbitrarios (*args y **kwargs)
- Desempaquetar argumentos: pasar listas y diccionarios
- Devolver múltiples resultados
- Tipos especiales de funciones
- Funciones recursivas
- Funciones lambda
- Decoradores
- Funciones generadoras
Ejercicios programación estructurada y modular
- Ejercicios con funciones
-
Programación estructurada y modular: Ejemplo completo
Programación orientada a objetos
- Programación orientada a objetos
- Introducción a la Programación Orientada a Objetos
- Definición de clase, objeto, atributos y métodos
- Atributos de objetos
- Método constructor init
- Definiendo métodos. El parámetro self
- Definición de objetos
- Conceptos avanzados de programación orientada a objetos I
- Atributos de clase (estáticas)
- Atributos privados y ocultos
- Métodos estáticos
- Métodos de clase (estáticos)
- Funciones getattr,setattr,delattr,hasattr
-
Conceptos avanzados de programación orientada a objetos II
- Propiedades: getters, setters, deleter
- Representación de objetos __str__ y __repr__
- Comparación de objetos __eq__
- Operar con objetos __add__ y __sub__
- Más métodos especiales
-
Polimorfismo, herencia y delegación
- Polimorfismo
- Herencia
- La función super()
- Herencia múltiple
- Funciones issubclass() y isinstance()
- Delegación
Ejercicios programación orientada a objetos
- Programación orientadas a objetos: Ejemplo completo