CursosEmpresasBlogLiveConfPrecios

Practicando el tipado estático

Clase 6 de 21 • Curso Profesional de Python

Clase anteriorSiguiente clase

Contenido del curso

Introducción
  • 1
    ¿Qué necesitas saber para tomar el curso?

    ¿Qué necesitas saber para tomar el curso?

    03:15
  • 2
    ¿Cómo funciona Python?

    ¿Cómo funciona Python?

    07:49
  • 3
    Cómo organizar las carpetas de tus proyectos

    Cómo organizar las carpetas de tus proyectos

    07:15
Static Typing
  • 4
    ¿Qué son los tipados?

    ¿Qué son los tipados?

    10:26
  • 5
    Tipado estático en Python

    Tipado estático en Python

    14:26
  • 6
    Practicando el tipado estático

    Practicando el tipado estático

    13:33
Conceptos avanzados de funciones
  • 7
    Scope: alcance de las variables

    Scope: alcance de las variables

    06:32
  • 8
    Closures

    Closures

    08:21
  • 9
    Programando closures

    Programando closures

    07:00
  • 10
    Decoradores

    Decoradores

    06:19
  • 11
    Programando decoradores

    Programando decoradores

    13:05
Estructuras de datos avanzadas
  • 12
    Iteradores

    Iteradores

    13:52
  • 13
    La sucesión de Fibonacci

    La sucesión de Fibonacci

    14:01
  • 14
    Generadores

    Generadores

    07:22
  • 15
    Mejorando nuestra sucesión de Fibonacci

    Mejorando nuestra sucesión de Fibonacci

    06:53
  • 16
    Sets

    Sets

    10:58
  • 17
    Operaciones con sets

    Operaciones con sets

    06:09
  • 18
    Eliminando los repetidos de una lista

    Eliminando los repetidos de una lista

    05:20
Bonus
  • 19
    Manejo de fechas

    Manejo de fechas

    08:44
  • 20
    Time zones

    Time zones

    08:46
Conclusión
  • 21
    Completaste la trilogía. ¿Cómo seguir?

    Completaste la trilogía. ¿Cómo seguir?

    01:30
    Orazio Cappadonna Cantor

    Orazio Cappadonna Cantor

    student•
    hace 4 años

    Yo lo quise hacer de la manera mas profesional posible integrando pruebas unitarias para testear los metodos, y seria de la siguiente forma:

    Archivo palindrome.py:

    """Python module to know if a string is palindrome""" def is_palindrome(string: str) -> bool: """Returns if the string is palindrome (True or False)""" string = string.lower() string = string.replace(' ', '') return (string == string[::-1]) def run(): print(is_palindrome('Hola mundo!')) if __name__ == '__main__': run()

    Archivo prime_number:

    """Python module to know if a number is prime""" def is_prime(number: int) -> bool: """Returns True if number is prime or False if the number is not prime""" results_list = [x for x in range(2, number) if number % x == 0] return len(results_list) == 0 def run(): number: int = 73 number_is_prime: bool = is_prime(number) print(f'Is {number} a prime number? {number_is_prime}') if __name__ == '__main__': run()

    Y aqui el archivo test.py:

    """Testing the methods""" import unittest from unittest import TestCase from palindrome import is_palindrome from prime_number import is_prime class TestingFunctions(TestCase): """Tests to know if the methods works well""" def test_is_palindrome(self): """Testing is_palindrome method""" self.assertEqual(is_palindrome('Ligar es ser agil'), True) self.assertEqual(is_palindrome('Arepera'), True) self.assertEqual(is_palindrome('Esto no es un palindromo'), False) self.assertEqual(is_palindrome('ESto tampoco es un palindromo'), False) self.assertEqual(is_palindrome('Ana'), True) def test_is_prime(self): """Testing is_prime method""" self.assertEqual(is_prime(100), False) self.assertEqual(is_prime(200), False) self.assertEqual(is_prime(53), True) self.assertEqual(is_prime(23), True) self.assertEqual(is_prime(45), False) self.assertEqual(is_prime(32), False) self.assertEqual(is_prime(142), False) if __name__ == '__main__': unittest.main()

    Y por ultimo los resultados de los tests:

    .. ---------------------------------------------------------------------- Ran 2 tests in 0.001s OK
      Miguel Sanchez

      Miguel Sanchez

      student•
      hace 4 años

      Excelente aporte :0

      Sebastián Andrade

      Sebastián Andrade

      student•
      hace 4 años

      Genial!

    Ernesto Crespo

    Ernesto Crespo

    student•
    hace 4 años

    Una herramienta muy útil para validar código antes de subirlo a un repositorio git es pre-commit. Para usarlo con mypy pueden revisar artículo. Dejo un artículo con varias reglas de pre-commit para python enlace

      Jose Manuel Acevo Garcia

      Jose Manuel Acevo Garcia

      student•
      hace 4 años

      Muchisimas gracias por la info....1saludo

      Bryan Estiven Silva Mercado

      Bryan Estiven Silva Mercado

      student•
      hace 4 años

      Excelente articulo, voy a utilizarlo para refactorizar un viejo proyecto que tengo en python

    Carlos José Tun Pinzón

    Carlos José Tun Pinzón

    student•
    hace 4 años

    Modulo mypy

    El modulo mypy se complementa con el modulo typing ya que permitirá mostrar los errores de tipado débil en Python.

    Para revisar si algún archivo contiene errores de tipado ejecutamos en la línea de comandos lo siguiente:

    mypy archivo.py --check-untyped-defs

    Como resultado nos mostrará si existe algún error de compatibilidad de tipos.

      Luis Alejandro Vera Hernandez

      Luis Alejandro Vera Hernandez

      student•
      hace 4 años

      Gracias por el resumen

    Emmanuel Corral Marco

    Emmanuel Corral Marco

    student•
    hace 4 años

    Practice the static type

    • Following the tips of intermediate python course, from terminal:
    1. mkdir new_folder
    2. git init
    3. py -m venv venv
    4. touch .gitignore type in .gitignore file
    # Ignore the enviroment files when you push to github. venv
    1. avenv (alias to activate venv: .\venv\Scripts\activate)
    2. pip install mypy
    3. pip list (to check mypy)
    4. touch palindrome-py
    5. code palindrome-py
    6. Make your code!!!!
    7. mypy palindrome-py --check-untyped-defs
      Omar Rodríguez Aldama

      Omar Rodríguez Aldama

      student•
      hace 4 años

      muy buen resumen de la clase

      Luis Alejandro Vera Hernandez

      Luis Alejandro Vera Hernandez

      student•
      hace 4 años

      Esto me va a servir llevarme hasta acostumbrarme a los comandos

    Jonathan Alemán

    Jonathan Alemán

    student•
    hace 4 años

    Mi aporte en código :D . ¡Hola a todos! De esta forma realice el reto. SI tienen alguna sugerencia es más que bienvenida :) (

    prime_number_TipadoEstatico.png
    Espero les sirva ¡Nunca paren de aprender!

      Miguel Rodríguez

      Miguel Rodríguez

      student•
      hace 4 años

      Genial, aunque creo que sale sobrando la parte de -> bool , ya que al final no retornas un valor booleano.

      Jonathan Alemán

      Jonathan Alemán

      student•
      hace 4 años

      @AlexRods Tienes razón. Lo había intentado con otra forma en dónde si lo ocupaba, pero al final me decidí por esta, ya que a mi parecer me fue más fácil y corta. Agradezco tu observación

    Carlos Rodríguez

    Carlos Rodríguez

    student•
    hace 4 años

    Recomiendo mucho el linter de python pylint es super exigente en la escritura de código, te ayuda escribir código de calidad:a

    pip install pylint

    Luego generan el archivo de configuración de pylint si quieren omitir algunas reglas o modificarlas:

    pylint --generate-rcfile > .pylintrc

    Luego no se les olvide que una vez teniendo todos los módulos instalados deben generar sus requirements.txt.

    pip freeze > requirement.txt
      Eduard Giraldo Martínez

      Eduard Giraldo Martínez

      student•
      hace 4 años

      Ohh interesante, lo intentaré 🚀

      Luis Valencia

      Luis Valencia

      student•
      hace 3 años

      Excelente recomendacion

    Henry Daniel

    Henry Daniel

    student•
    hace 4 años

    Reto 1

    def is_primo(num:int)->bool: result=[i for i in range(1,num+1) if num%i==0] return len(result)==2 def run(): print(is_primo(13)) if __name__=='__main__': run()
      Juan David Diaz Ramos

      Juan David Diaz Ramos

      student•
      hace 4 años

      Debes evaluar cuando ingresas el número 1 ya que este no es primo. Saludos.

      Edú Pilares Quispe

      Edú Pilares Quispe

      student•
      hace 4 años

      Si ingresa el número 1 el len no le daría 2 así que el código está perfecto

    Heberto Nicolás Hernández Andrade

    Heberto Nicolás Hernández Andrade

    student•
    hace 4 años

    Para preparar nuestro entorno de trabajo se siguió el siguiente procedimiento:

    • Se crea una carpeta para el desarrollo del proyecto.
    • Se inicializó un repositorio de git con "git init".
    • Se creó un ambiente virtual con "python3 -m venv venv".
    • Se creó un archivo .gitignore con "touch .gitignore".
    • Dentro del archivo .gitignore se coloca la carpeta venv mediante la siguiente línea código: "venv/"
    • Se activó el ambiente virtual con ".\venv\Scripts\activate".
    • Se instaló mypy mediante "pip install mypy".
    • Se creó el archivo palindrome. py.
    Víctor Isaac Arias García

    Víctor Isaac Arias García

    student•
    hace 4 años

    Para los que estamos utilizando WSL2 y nos dio problemas inicializar el entorno virtual aca dejo el comando

    . venv/bin/activate
      GABRIEL OMAR TARAPUES RODRIGUEZ

      GABRIEL OMAR TARAPUES RODRIGUEZ

      student•
      hace 4 años

      Que error te dio?

      Gonzalo Israel Pinto Salazar

      Gonzalo Israel Pinto Salazar

      student•
      hace 3 años

      Genio gracias... gracias...

    David Silva Apango

    David Silva Apango

    student•
    hace 4 años

    Este es mi aporte, traté de usar la menor cantidad de líneas de código considerando lo siguiente:

    • Como no se necesita dividir entre el número 1 y el mismo que estamos trabajando, NO los incluyo dentro del rango.
    • En caso de que el número sea 1 NO entra en el ciclo for y se declara de inmediato que no es primo.
    • En caso de que se encuentre un sólo módulo igual a cero salimos del ciclo inmediatamente, ya que no es necesario seguir buscando (con un contraejemplo basta).
    def prime_number(number: int) -> bool: for i in range(2,number): if number % i == 0: return False return True return False def run(): n: int = int(input('Escribe un número')) if prime_number(n): print("Es primo") else: print("No es primo") if __name__ == '__main__': run()
      Fernanda Arteaga Guivin

      Fernanda Arteaga Guivin

      student•
      hace 4 años

      bueniisimo bastante concreto!

    Roberto Francisco Quijano Vicente

    Roberto Francisco Quijano Vicente

    student•
    hace 4 años

    Solución del reto con el teorema de Wilson:

    def isPrime(number: int) -> bool: """ Function that applyes the Wilson's Theorem to determine if a number is prime. """ factorial = number -1 for i in range(2, number-1): factorial *= i return (factorial + 1) % number == 0 def run(): print(isPrime(18)) if __name__ == '__main__': run()
    Gabriel Missael Barco

    Gabriel Missael Barco

    student•
    hace 4 años

    Practicando el tipado estático

    • Para checar que el código respeta el tipado que especificamos, debemos correrlo con mypy <nombre>.py --check-untyped-defs 👀. El módulo mypy nos arroja errores de tipado, por ejemplo:

      palindrome.py:9: error: Argument 1 to "is_palindrome" has incompatible type "int"; expected "str" Found 1 error in 1 file (checked 1 source file)
    • Solución al reto:

      def is_prime(number: int) -> bool: for i in range(2, number): if number % i == 0: return False return True def main(): # print(is_prime('Hola')) print(is_prime(5)) if __name__=='__main__': main()
      fidel angel ochoa

      fidel angel ochoa

      student•
      hace 4 años

      excelente, como se podria hacer con un list comprenhension?

    David Rosas

    David Rosas

    student•
    hace 4 años

    Me marco bien el error de tipado con un str y hasta metiendole float. Pero si a la funcion le meto un bool, ya sea True o False, me dice que todo esta bien:

    Success: no issues found in 1 source file

    Por que sucede esto?

      Liliana Molina Camacho

      Liliana Molina Camacho

      student•
      hace 3 años

      Me pasó lo mismo, luego revisando la función, vi que tenía un espacio entre : y str, se lo quité y con eso si me marcó el error.

      Bruno Nicolás Barajas Correa

      Bruno Nicolás Barajas Correa

      student•
      hace 3 años

      Creo que nos marca lo de Succes cuando realmente se compilo el código y no encontró ningún problema. Lo veo como bandera verde cuando nos sale eso, para después ejecutarlo de forma normal.

    Lino Tomás Vazquez Ponce

    Lino Tomás Vazquez Ponce

    student•
    hace 4 años

    ahora que lo pienso no se si debí importar typing pero bueno...acá está

    from typing import * def is_prime(num: int)-> bool: if num == 2: return True elif num == 1 or num % 2 == 0: return False else: return True if __name__ == "__main__": print(is_prime(4))
      fidel angel ochoa

      fidel angel ochoa

      student•
      hace 4 años

      muchas gracias, me parecio super simple el codigo, te comparto lo que le agregue leyendo a otros compañeros.

      def is_prime(num: int) -> bool: if num == 2: return True elif num == 1 or [i for i in range(2, num // 2) if num % i == 0]: return False else: return True if __name__ == "__main__": number = int(input('Write a number to guess if is prime: ')) print(f'Is {number} a prime number?') print(is_prime(number))```
    Diego Andrés Rojas González

    Diego Andrés Rojas González

    student•
    hace 4 años

    Si estas usando powershell y no puedes activar el entorno virtual prueba con esto:

    1. Abre powershell en modo administrador
    2. ejecuta el siguiente comando
    Set-ExecutionPolicy Unrestricted -Force

    Puedes encontrar mas información en https://docs.microsoft.com/en-us/powershell/...

    André Thomas Gil Cifuentes

    André Thomas Gil Cifuentes

    student•
    hace 4 años

    Esta es mi solucion al reto, tambien puse a prueba mi creatividad para hacer el codigo lo mas efectivo posible y consegui un time complexity de O(sqrt(n))

    from math import sqrt def is_prime(n: int) -> bool: if n == 0 or n == 1: return False if n == 2 or n == 3: return True if n % 2 == 0 or n % 3 == 0: return False # Revisamos si el numero esta compuesto por # un numero primo diferente de 2 y 3. for i in range(5, int(sqrt(n)) + 1): if n % i == 0 or n % (i + 2) == 0: return False return True def main(): if is_prime(4): print("El numero es primo") else: print("El numero NO es primo") if __name__ == '__main__': main()
      Jhon Edward Bedoya

      Jhon Edward Bedoya

      student•
      hace 4 años

      🟢 @ AndrE_ Well done, but the code is a bit complex still. Try to make it more friendly and easy to read. 🦾

    Kevin Tovar

    Kevin Tovar

    student•
    hace 4 años
    def is_prime(number: int) -> bool: n = 0 for num in range(1, number + 1): if number % num == 0: n += 1 return n == 2 def run(): print(is_prime(5)) if __name__ == '__main__': run()
      Joseph Lázaro Ricardo

      Joseph Lázaro Ricardo

      student•
      hace 4 años

      Lo hice como tú, sencillito para no confundir a la banda.

    Sergio Garnica

    Sergio Garnica

    student•
    hace 4 años

    Una herramienta muy útil para revisar posibles errores en Python, como por ejemplo el tipo de datos, es utilizar Unit Testing.

    Estos dos videos lo explican muy bien: https://www.youtube.com/watch?v=1Lfv5tUGsn8 https://www.youtube.com/watch?v=6tNS--WetLI

    Nelson Porfirio Sanchez Cedron

    Nelson Porfirio Sanchez Cedron

    student•
    hace 4 años

    Aquí les dejo mi código del reto de la clase. Estoy usando el Teorema de Wilson para la prueba de primalidad.

    def is_prime(number: int) -> bool: factorial = 1 if number == 0: return false for i in range(1, number): factorial = factorial * i factorial += 1 if factorial % number == 0 and number > 1: return True else: return False
    Javier Pajarito Caicedo

    Javier Pajarito Caicedo

    student•
    hace 4 años

    ¿Qué diferencia hay entre escribir la sintaxis para tipado estático y poner un int() cuando pedimos el dato como se ve en la imagen?

    estatico.png
      Andrés Felipe Martínez Salazar

      Andrés Felipe Martínez Salazar

      student•
      hace 4 años

      El int("598") es en realidad un cast, esto convierte el string a un int en tiempo de ejecución, en cambio la sintaxis de tipado estático es mas una guía para los desarrolladores pero no afecta en tiempo de ejecucion, te das cuenta si haces algo tal que asi:

      numero : int = "598" print(type(numero))

      veras que imprime <class 'str'> porque aunque le digas que es un entero en realidad en tiempo de ejecucion le estas asignando un string.

      Santiago Ramos Morales

      Santiago Ramos Morales

      student•
      hace 4 años

      Estás casteando de un tipo a otro, está bien pero vas a tener un código muy tedioso de leer, créeme, donde trabajé tenían algo así en el software de timbrado de documentos fiscales y era un dolor de cabeza.

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads