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

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