SlideShare una empresa de Scribd logo
Onapsis Inc. | All Rights Reserved
Onapsis Inc. | All Rights Reserved
¿Por qué Python está buenísimo?
Yonatan Romero | Argentesting 2019
Onapsis Inc. | All Rights Reserved
import me
• Senior Python developer en Onapsis
• Docente en la cátedra de Ingeniería de Software en la Universidad
Nacional de la Matanza
Antes
• Administrador de redes en CSJN
• Programador Python
Yonatan Romero
Onapsis Inc. | All Rights Reserved
Python
• Creado por Guido Van Rossum en 1991
• Fuertemente tipado
• Tipado dinámico
• Gran comunidad
• Utilizado en muchos ámbitos:
• Desarrollo web
• Inteligencia artificial
• Data analysis
• Científico y académico
• Testing
Onapsis Inc. | All Rights Reserved
Contexto del éxito
• Licencia
• Zen
• Comunidad
• Repositorio de módulos
• Killer apps (Django, Pandas, Numpy, Tensor flow)
• Multiplataforma
¿Qué lo hace tan especial?
Onapsis Inc. | All Rights Reserved
Cualidades de Python
• Fácil de aprender
• Ciclo de desarrollo rápido
• Fácil de escribir
• Legibilidad del código
• Baterías incluídas
• Una sola forma de hacer las cosas
Onapsis Inc. | All Rights Reserved
Un poco de la magia de Python en 5 minutos
Onapsis Inc. | All Rights Reserved
Pero… Ese ejemplo se puede hacer con bash
A simple vista se puede decir que Python es como cualquier otro
lenguaje interpretado.
Muchas veces se prefiere al lenguaje compilado sobre el interpretado.
El punto es ¿Python es solo un lenguaje de scripting más?
¿Es sólo un lenguaje de scripting?
Onapsis Inc. | All Rights Reserved
Indentación
La identación es ejecutable
Es la forma en la que escribimos pseudo-código
Onapsis Inc. | All Rights Reserved
Iterator protocol
• Podemos iterar cualquier objeto que implemente el protocolo
• Iterables: strings, lists, sets, dicts, tuples, collections,
files, urls, csv readers, itertools, etc
• Cosas que consumen iteradores: for-loops, sorts, min, max,
set, list, tuple, dict, itertools, etc
• Se pueden concatenar como los pipes y filtros de Unix
En Python implementamos protocolos
Onapsis Inc. | All Rights Reserved
Iterator protocol
Onapsis Inc. | All Rights Reserved
Listas por comprensión
• Deriva de la notación usada en matemáticas
• Expresiva y limpia
• Mucho más flexible y expresiva que map, filter y reduce
Una de las features más amadas ❤
Onapsis Inc. | All Rights Reserved
Listas por comprensión
Onapsis Inc. | All Rights Reserved
Generadores
• Sintaxis simple, sólo agrega la palabra reservada yield
• Recuerda el estado de la ejecución entre invocaciones:
• Variables locales definidas
• Loops
• Excepciones
• Execution pointer (vuelve a la misma linea que estaba ejecutandose)
• Muy útil para escribir simulaciones
• Muy muy útil para recorrer listas muy muy grandes sin ocupar toda
la memoria
La forma más simple de escribir un iterador
Onapsis Inc. | All Rights Reserved
Generadores
Onapsis Inc. | All Rights Reserved
Genexpr, Sets comps, Dict comps
Extensión lógica de las listas por comprensión para unificar el
lenguaje
Onapsis Inc. | All Rights Reserved
Asincronismo
Basado en generadores corrutinas
Onapsis Inc. | All Rights Reserved
Decoradores
• Expresivos
• Funciona para funciones, métodos y clases
Podemos componer funciones
Onapsis Inc. | All Rights Reserved
Decoradores
Onapsis Inc. | All Rights Reserved
Bloques with
• Una forma limpia y elegante para administrar recursos: Hilos,
archivos, bloqueos, etc.
• Herramienta para refactorear código sandwich
Abstrae el setup y teardown de recursos
Onapsis Inc. | All Rights Reserved
Onapsis Inc. | All Rights Reserved
Onapsis Inc. | All Rights Reserved
Abstract Base Classes
Duck typing
Onapsis Inc. | All Rights Reserved
¿Por qué Python está buenísimo?
• Indentación
• Iterator protocol
• Generadores
• List comp, set comp, dict comp, genexp
• Asincronismo
• Decoradores
• Bloques With
• Abstract Base Classes
Resumen
Onapsis Inc. | All Rights Reserved
Manos a la obra
Onapsis Inc. | All Rights Reserved
Archivo hosts
El archivo hosts de un ordenador es usado por el
sistema operativo para guardar la correspondencia
entre dominios de Internet y direcciones IP. Este es
uno de los diferentes métodos que usa el sistema
operativo para resolver nombres de
dominios.Wikipedia (ES)
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
172.17.0.2 impresora.local
Onapsis Inc. | All Rights Reserved
Nuestro trabajo
Actualmente tenemos un script para agregar campos en nuestro
archivo de hosts.
Nos piden modificarlo para:
• Si el registro a agregar ya existe, modificarlo con la nueva IP
• Eliminar registros
https://gitlab.com/romeroyonatan/argentesting/
Modificar código ajeno
Onapsis Inc. | All Rights Reserved
Pero… no tiene tests
Onapsis Inc. | All Rights Reserved
¿Cual es el plan?
1. Descargar el proyecto desde
https://gitlab.com/romeroyonatan/argentesting/
2. Crear un virtual environment python3 -m venv venv/
3. Crear test unitarios para asegurarnos de no romper nada
4. Agregar funcionalidad requerida:
a. Si el registro a agregar ya existe, modificarlo con la nueva IP
b. Eliminar registros
Onapsis Inc. | All Rights Reserved
¿Preguntas?
Onapsis Inc. | All Rights Reserved
Muchas gracias

Más contenido relacionado

Similar a Argentesting 2019 - Por que-python-esta-buenisimo

Introduccion_a_Python_000000000000000.pdf
Introduccion_a_Python_000000000000000.pdfIntroduccion_a_Python_000000000000000.pdf
Introduccion_a_Python_000000000000000.pdf
FranciaMascarell
 
Git: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativoGit: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativo
Aprende Git
 
Gestión Remota de Equipos con Python
Gestión Remota de Equipos con PythonGestión Remota de Equipos con Python
Gestión Remota de Equipos con Python
Juan Manuel Rodriguez Burgos
 
Introducción a Phyton
Introducción a PhytonIntroducción a Phyton
Introducción a Phyton
Duglas Oswaldo Moreno Mendoza
 
Social Erlang
Social ErlangSocial Erlang
Social Erlang
Carlos Abalde
 
Cómo elegir un servidor Web
Cómo elegir un servidor WebCómo elegir un servidor Web
Cómo elegir un servidor Web
Juan Belón Pérez
 
Clase 01 - Python.pptx
Clase 01 - Python.pptxClase 01 - Python.pptx
Clase 01 - Python.pptx
IS031
 
01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptx01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptx
DyllanBastidas
 
¿Cómo elegir servidor web?
¿Cómo elegir servidor web?¿Cómo elegir servidor web?
¿Cómo elegir servidor web?
Juan Belón Pérez
 
Sistema operativo online Presentacion
Sistema operativo online PresentacionSistema operativo online Presentacion
Sistema operativo online Presentacion
john
 
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...Socialmetrix
 
LliureX y Radio
LliureX y RadioLliureX y Radio
LliureX y Radio
Daniel Turienzo
 
Sesión 1: Python
Sesión 1: PythonSesión 1: Python
Sesión 1: Pythonmaluacsa
 
Sistema linux
Sistema linuxSistema linux
Sistema linux
bencalderon
 
Python.pptx
Python.pptxPython.pptx
Python.pptx
IBHV1
 
Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAlberto Gimeno
 
Desarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDesarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nube
Daniel Cruz
 

Similar a Argentesting 2019 - Por que-python-esta-buenisimo (20)

Introduccion_a_Python_000000000000000.pdf
Introduccion_a_Python_000000000000000.pdfIntroduccion_a_Python_000000000000000.pdf
Introduccion_a_Python_000000000000000.pdf
 
Git: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativoGit: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativo
 
Gestión Remota de Equipos con Python
Gestión Remota de Equipos con PythonGestión Remota de Equipos con Python
Gestión Remota de Equipos con Python
 
Introducción a Phyton
Introducción a PhytonIntroducción a Phyton
Introducción a Phyton
 
ingenieria de software
ingenieria de softwareingenieria de software
ingenieria de software
 
Social Erlang
Social ErlangSocial Erlang
Social Erlang
 
Cómo elegir un servidor Web
Cómo elegir un servidor WebCómo elegir un servidor Web
Cómo elegir un servidor Web
 
Software l y p
Software l y pSoftware l y p
Software l y p
 
Clase 01 - Python.pptx
Clase 01 - Python.pptxClase 01 - Python.pptx
Clase 01 - Python.pptx
 
01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptx01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptx
 
¿Cómo elegir servidor web?
¿Cómo elegir servidor web?¿Cómo elegir servidor web?
¿Cómo elegir servidor web?
 
Sistema operativo online Presentacion
Sistema operativo online PresentacionSistema operativo online Presentacion
Sistema operativo online Presentacion
 
Herramientas
HerramientasHerramientas
Herramientas
 
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
 
LliureX y Radio
LliureX y RadioLliureX y Radio
LliureX y Radio
 
Sesión 1: Python
Sesión 1: PythonSesión 1: Python
Sesión 1: Python
 
Sistema linux
Sistema linuxSistema linux
Sistema linux
 
Python.pptx
Python.pptxPython.pptx
Python.pptx
 
Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
 
Desarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDesarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nube
 

Más de Argentesting

Análisis de Aplicaciones móviles - aspectos de seguridad
Análisis de Aplicaciones móviles - aspectos de seguridadAnálisis de Aplicaciones móviles - aspectos de seguridad
Análisis de Aplicaciones móviles - aspectos de seguridad
Argentesting
 
Argentesting 2019 - Cambiando el paradigma de la automatización
Argentesting 2019 - Cambiando el paradigma de la automatizaciónArgentesting 2019 - Cambiando el paradigma de la automatización
Argentesting 2019 - Cambiando el paradigma de la automatización
Argentesting
 
Argentesting 2019 - Cómo convertirse en un tester ágil
Argentesting 2019 - Cómo convertirse en un tester ágilArgentesting 2019 - Cómo convertirse en un tester ágil
Argentesting 2019 - Cómo convertirse en un tester ágil
Argentesting
 
Argentesting 2019 - Desentrañando selenium
Argentesting 2019 - Desentrañando seleniumArgentesting 2019 - Desentrañando selenium
Argentesting 2019 - Desentrañando selenium
Argentesting
 
Argentesting 2019 - Introducción al testing en DevOps
Argentesting 2019 - Introducción al testing en DevOpsArgentesting 2019 - Introducción al testing en DevOps
Argentesting 2019 - Introducción al testing en DevOps
Argentesting
 
Argentesting 2019 - En la era de la disrupción ¿Cómo estamos imaginando el fu...
Argentesting 2019 - En la era de la disrupción ¿Cómo estamos imaginando el fu...Argentesting 2019 - En la era de la disrupción ¿Cómo estamos imaginando el fu...
Argentesting 2019 - En la era de la disrupción ¿Cómo estamos imaginando el fu...
Argentesting
 
Argentesting 2019 - Cypress una completa experiencia de testing end to end
Argentesting 2019 - Cypress una completa experiencia de testing end to endArgentesting 2019 - Cypress una completa experiencia de testing end to end
Argentesting 2019 - Cypress una completa experiencia de testing end to end
Argentesting
 
Argentesting 2019 - Testing de accesibilidad: un valor agregado cómo profesio...
Argentesting 2019 - Testing de accesibilidad: un valor agregado cómo profesio...Argentesting 2019 - Testing de accesibilidad: un valor agregado cómo profesio...
Argentesting 2019 - Testing de accesibilidad: un valor agregado cómo profesio...
Argentesting
 
Argentesting 2019 - Testing exploratorio basado en sesiones
Argentesting 2019 - Testing exploratorio basado en sesionesArgentesting 2019 - Testing exploratorio basado en sesiones
Argentesting 2019 - Testing exploratorio basado en sesiones
Argentesting
 
Argentesting 2019 - Ser ágiles, hacer ágiles. la historia de un proyecto exitoso
Argentesting 2019 - Ser ágiles, hacer ágiles. la historia de un proyecto exitosoArgentesting 2019 - Ser ágiles, hacer ágiles. la historia de un proyecto exitoso
Argentesting 2019 - Ser ágiles, hacer ágiles. la historia de un proyecto exitoso
Argentesting
 
Argentesting 2019 - En la era de la disrupción ¿Cómo estamos imaginando el fu...
Argentesting 2019 - En la era de la disrupción ¿Cómo estamos imaginando el fu...Argentesting 2019 - En la era de la disrupción ¿Cómo estamos imaginando el fu...
Argentesting 2019 - En la era de la disrupción ¿Cómo estamos imaginando el fu...
Argentesting
 
Argentesting 2019 - Introducción al testing en DevOps
Argentesting 2019 - Introducción al testing en DevOpsArgentesting 2019 - Introducción al testing en DevOps
Argentesting 2019 - Introducción al testing en DevOps
Argentesting
 
Argentesting 2019 - Cómo ser más productivo utilizando la línea de comando pa...
Argentesting 2019 - Cómo ser más productivo utilizando la línea de comando pa...Argentesting 2019 - Cómo ser más productivo utilizando la línea de comando pa...
Argentesting 2019 - Cómo ser más productivo utilizando la línea de comando pa...
Argentesting
 
Argentesting 2019 - Analizando la seguridad en aplicaciones móviles
Argentesting 2019 - Analizando la seguridad en aplicaciones móvilesArgentesting 2019 - Analizando la seguridad en aplicaciones móviles
Argentesting 2019 - Analizando la seguridad en aplicaciones móviles
Argentesting
 
Argentesting 2019 - Accesibilidad, donde las especialidades convergen
Argentesting 2019 - Accesibilidad, donde las especialidades convergenArgentesting 2019 - Accesibilidad, donde las especialidades convergen
Argentesting 2019 - Accesibilidad, donde las especialidades convergen
Argentesting
 
Argentesting 2019 - Automatizar al infinito y más allá, trae sus inconvenientes
Argentesting 2019 - Automatizar al infinito y más allá, trae sus inconvenientesArgentesting 2019 - Automatizar al infinito y más allá, trae sus inconvenientes
Argentesting 2019 - Automatizar al infinito y más allá, trae sus inconvenientes
Argentesting
 
Argentesting 2019 - Cómo la 4ta revolución industrial afectará al testing
Argentesting 2019 - Cómo la 4ta revolución industrial afectará al testingArgentesting 2019 - Cómo la 4ta revolución industrial afectará al testing
Argentesting 2019 - Cómo la 4ta revolución industrial afectará al testing
Argentesting
 
Argentesting 2019 - Caso de éxito de pruebas automatizadas en industria autom...
Argentesting 2019 - Caso de éxito de pruebas automatizadas en industria autom...Argentesting 2019 - Caso de éxito de pruebas automatizadas en industria autom...
Argentesting 2019 - Caso de éxito de pruebas automatizadas en industria autom...
Argentesting
 
Argentesting 2019 - Lippia, un framework multipropósito
Argentesting 2019 - Lippia, un framework multipropósitoArgentesting 2019 - Lippia, un framework multipropósito
Argentesting 2019 - Lippia, un framework multipropósito
Argentesting
 
Argentesting 2019 - Machine learning en testing priorizacion de casos de pr...
Argentesting 2019 - Machine learning en testing   priorizacion de casos de pr...Argentesting 2019 - Machine learning en testing   priorizacion de casos de pr...
Argentesting 2019 - Machine learning en testing priorizacion de casos de pr...
Argentesting
 

Más de Argentesting (20)

Análisis de Aplicaciones móviles - aspectos de seguridad
Análisis de Aplicaciones móviles - aspectos de seguridadAnálisis de Aplicaciones móviles - aspectos de seguridad
Análisis de Aplicaciones móviles - aspectos de seguridad
 
Argentesting 2019 - Cambiando el paradigma de la automatización
Argentesting 2019 - Cambiando el paradigma de la automatizaciónArgentesting 2019 - Cambiando el paradigma de la automatización
Argentesting 2019 - Cambiando el paradigma de la automatización
 
Argentesting 2019 - Cómo convertirse en un tester ágil
Argentesting 2019 - Cómo convertirse en un tester ágilArgentesting 2019 - Cómo convertirse en un tester ágil
Argentesting 2019 - Cómo convertirse en un tester ágil
 
Argentesting 2019 - Desentrañando selenium
Argentesting 2019 - Desentrañando seleniumArgentesting 2019 - Desentrañando selenium
Argentesting 2019 - Desentrañando selenium
 
Argentesting 2019 - Introducción al testing en DevOps
Argentesting 2019 - Introducción al testing en DevOpsArgentesting 2019 - Introducción al testing en DevOps
Argentesting 2019 - Introducción al testing en DevOps
 
Argentesting 2019 - En la era de la disrupción ¿Cómo estamos imaginando el fu...
Argentesting 2019 - En la era de la disrupción ¿Cómo estamos imaginando el fu...Argentesting 2019 - En la era de la disrupción ¿Cómo estamos imaginando el fu...
Argentesting 2019 - En la era de la disrupción ¿Cómo estamos imaginando el fu...
 
Argentesting 2019 - Cypress una completa experiencia de testing end to end
Argentesting 2019 - Cypress una completa experiencia de testing end to endArgentesting 2019 - Cypress una completa experiencia de testing end to end
Argentesting 2019 - Cypress una completa experiencia de testing end to end
 
Argentesting 2019 - Testing de accesibilidad: un valor agregado cómo profesio...
Argentesting 2019 - Testing de accesibilidad: un valor agregado cómo profesio...Argentesting 2019 - Testing de accesibilidad: un valor agregado cómo profesio...
Argentesting 2019 - Testing de accesibilidad: un valor agregado cómo profesio...
 
Argentesting 2019 - Testing exploratorio basado en sesiones
Argentesting 2019 - Testing exploratorio basado en sesionesArgentesting 2019 - Testing exploratorio basado en sesiones
Argentesting 2019 - Testing exploratorio basado en sesiones
 
Argentesting 2019 - Ser ágiles, hacer ágiles. la historia de un proyecto exitoso
Argentesting 2019 - Ser ágiles, hacer ágiles. la historia de un proyecto exitosoArgentesting 2019 - Ser ágiles, hacer ágiles. la historia de un proyecto exitoso
Argentesting 2019 - Ser ágiles, hacer ágiles. la historia de un proyecto exitoso
 
Argentesting 2019 - En la era de la disrupción ¿Cómo estamos imaginando el fu...
Argentesting 2019 - En la era de la disrupción ¿Cómo estamos imaginando el fu...Argentesting 2019 - En la era de la disrupción ¿Cómo estamos imaginando el fu...
Argentesting 2019 - En la era de la disrupción ¿Cómo estamos imaginando el fu...
 
Argentesting 2019 - Introducción al testing en DevOps
Argentesting 2019 - Introducción al testing en DevOpsArgentesting 2019 - Introducción al testing en DevOps
Argentesting 2019 - Introducción al testing en DevOps
 
Argentesting 2019 - Cómo ser más productivo utilizando la línea de comando pa...
Argentesting 2019 - Cómo ser más productivo utilizando la línea de comando pa...Argentesting 2019 - Cómo ser más productivo utilizando la línea de comando pa...
Argentesting 2019 - Cómo ser más productivo utilizando la línea de comando pa...
 
Argentesting 2019 - Analizando la seguridad en aplicaciones móviles
Argentesting 2019 - Analizando la seguridad en aplicaciones móvilesArgentesting 2019 - Analizando la seguridad en aplicaciones móviles
Argentesting 2019 - Analizando la seguridad en aplicaciones móviles
 
Argentesting 2019 - Accesibilidad, donde las especialidades convergen
Argentesting 2019 - Accesibilidad, donde las especialidades convergenArgentesting 2019 - Accesibilidad, donde las especialidades convergen
Argentesting 2019 - Accesibilidad, donde las especialidades convergen
 
Argentesting 2019 - Automatizar al infinito y más allá, trae sus inconvenientes
Argentesting 2019 - Automatizar al infinito y más allá, trae sus inconvenientesArgentesting 2019 - Automatizar al infinito y más allá, trae sus inconvenientes
Argentesting 2019 - Automatizar al infinito y más allá, trae sus inconvenientes
 
Argentesting 2019 - Cómo la 4ta revolución industrial afectará al testing
Argentesting 2019 - Cómo la 4ta revolución industrial afectará al testingArgentesting 2019 - Cómo la 4ta revolución industrial afectará al testing
Argentesting 2019 - Cómo la 4ta revolución industrial afectará al testing
 
Argentesting 2019 - Caso de éxito de pruebas automatizadas en industria autom...
Argentesting 2019 - Caso de éxito de pruebas automatizadas en industria autom...Argentesting 2019 - Caso de éxito de pruebas automatizadas en industria autom...
Argentesting 2019 - Caso de éxito de pruebas automatizadas en industria autom...
 
Argentesting 2019 - Lippia, un framework multipropósito
Argentesting 2019 - Lippia, un framework multipropósitoArgentesting 2019 - Lippia, un framework multipropósito
Argentesting 2019 - Lippia, un framework multipropósito
 
Argentesting 2019 - Machine learning en testing priorizacion de casos de pr...
Argentesting 2019 - Machine learning en testing   priorizacion de casos de pr...Argentesting 2019 - Machine learning en testing   priorizacion de casos de pr...
Argentesting 2019 - Machine learning en testing priorizacion de casos de pr...
 

Último

Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
coloradxmaria
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
cdraco
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
Leidyfuentes19
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
JuanPrez962115
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
Fernando Villares
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
jjfch3110
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
44652726
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
rafaelsalazar0615
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
DanielErazoMedina
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
PABLOCESARGARZONBENI
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
thomasdcroz38
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
zoecaicedosalazar
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
DiegoCampos433849
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
AlejandraCasallas7
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
Luis Enrique Zafra Haro
 

Último (20)

Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
 

Argentesting 2019 - Por que-python-esta-buenisimo

  • 1. Onapsis Inc. | All Rights Reserved Onapsis Inc. | All Rights Reserved ¿Por qué Python está buenísimo? Yonatan Romero | Argentesting 2019
  • 2. Onapsis Inc. | All Rights Reserved import me • Senior Python developer en Onapsis • Docente en la cátedra de Ingeniería de Software en la Universidad Nacional de la Matanza Antes • Administrador de redes en CSJN • Programador Python Yonatan Romero
  • 3. Onapsis Inc. | All Rights Reserved Python • Creado por Guido Van Rossum en 1991 • Fuertemente tipado • Tipado dinámico • Gran comunidad • Utilizado en muchos ámbitos: • Desarrollo web • Inteligencia artificial • Data analysis • Científico y académico • Testing
  • 4. Onapsis Inc. | All Rights Reserved Contexto del éxito • Licencia • Zen • Comunidad • Repositorio de módulos • Killer apps (Django, Pandas, Numpy, Tensor flow) • Multiplataforma ¿Qué lo hace tan especial?
  • 5. Onapsis Inc. | All Rights Reserved Cualidades de Python • Fácil de aprender • Ciclo de desarrollo rápido • Fácil de escribir • Legibilidad del código • Baterías incluídas • Una sola forma de hacer las cosas
  • 6. Onapsis Inc. | All Rights Reserved Un poco de la magia de Python en 5 minutos
  • 7. Onapsis Inc. | All Rights Reserved Pero… Ese ejemplo se puede hacer con bash A simple vista se puede decir que Python es como cualquier otro lenguaje interpretado. Muchas veces se prefiere al lenguaje compilado sobre el interpretado. El punto es ¿Python es solo un lenguaje de scripting más? ¿Es sólo un lenguaje de scripting?
  • 8. Onapsis Inc. | All Rights Reserved Indentación La identación es ejecutable Es la forma en la que escribimos pseudo-código
  • 9. Onapsis Inc. | All Rights Reserved Iterator protocol • Podemos iterar cualquier objeto que implemente el protocolo • Iterables: strings, lists, sets, dicts, tuples, collections, files, urls, csv readers, itertools, etc • Cosas que consumen iteradores: for-loops, sorts, min, max, set, list, tuple, dict, itertools, etc • Se pueden concatenar como los pipes y filtros de Unix En Python implementamos protocolos
  • 10. Onapsis Inc. | All Rights Reserved Iterator protocol
  • 11. Onapsis Inc. | All Rights Reserved Listas por comprensión • Deriva de la notación usada en matemáticas • Expresiva y limpia • Mucho más flexible y expresiva que map, filter y reduce Una de las features más amadas ❤
  • 12. Onapsis Inc. | All Rights Reserved Listas por comprensión
  • 13. Onapsis Inc. | All Rights Reserved Generadores • Sintaxis simple, sólo agrega la palabra reservada yield • Recuerda el estado de la ejecución entre invocaciones: • Variables locales definidas • Loops • Excepciones • Execution pointer (vuelve a la misma linea que estaba ejecutandose) • Muy útil para escribir simulaciones • Muy muy útil para recorrer listas muy muy grandes sin ocupar toda la memoria La forma más simple de escribir un iterador
  • 14. Onapsis Inc. | All Rights Reserved Generadores
  • 15. Onapsis Inc. | All Rights Reserved Genexpr, Sets comps, Dict comps Extensión lógica de las listas por comprensión para unificar el lenguaje
  • 16. Onapsis Inc. | All Rights Reserved Asincronismo Basado en generadores corrutinas
  • 17. Onapsis Inc. | All Rights Reserved Decoradores • Expresivos • Funciona para funciones, métodos y clases Podemos componer funciones
  • 18. Onapsis Inc. | All Rights Reserved Decoradores
  • 19. Onapsis Inc. | All Rights Reserved Bloques with • Una forma limpia y elegante para administrar recursos: Hilos, archivos, bloqueos, etc. • Herramienta para refactorear código sandwich Abstrae el setup y teardown de recursos
  • 20. Onapsis Inc. | All Rights Reserved
  • 21. Onapsis Inc. | All Rights Reserved
  • 22. Onapsis Inc. | All Rights Reserved Abstract Base Classes Duck typing
  • 23. Onapsis Inc. | All Rights Reserved ¿Por qué Python está buenísimo? • Indentación • Iterator protocol • Generadores • List comp, set comp, dict comp, genexp • Asincronismo • Decoradores • Bloques With • Abstract Base Classes Resumen
  • 24. Onapsis Inc. | All Rights Reserved Manos a la obra
  • 25. Onapsis Inc. | All Rights Reserved Archivo hosts El archivo hosts de un ordenador es usado por el sistema operativo para guardar la correspondencia entre dominios de Internet y direcciones IP. Este es uno de los diferentes métodos que usa el sistema operativo para resolver nombres de dominios.Wikipedia (ES) 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback 172.17.0.2 impresora.local
  • 26. Onapsis Inc. | All Rights Reserved Nuestro trabajo Actualmente tenemos un script para agregar campos en nuestro archivo de hosts. Nos piden modificarlo para: • Si el registro a agregar ya existe, modificarlo con la nueva IP • Eliminar registros https://gitlab.com/romeroyonatan/argentesting/ Modificar código ajeno
  • 27. Onapsis Inc. | All Rights Reserved Pero… no tiene tests
  • 28. Onapsis Inc. | All Rights Reserved ¿Cual es el plan? 1. Descargar el proyecto desde https://gitlab.com/romeroyonatan/argentesting/ 2. Crear un virtual environment python3 -m venv venv/ 3. Crear test unitarios para asegurarnos de no romper nada 4. Agregar funcionalidad requerida: a. Si el registro a agregar ya existe, modificarlo con la nueva IP b. Eliminar registros
  • 29. Onapsis Inc. | All Rights Reserved ¿Preguntas?
  • 30. Onapsis Inc. | All Rights Reserved Muchas gracias