Decoración de funciones en Python usando functools

La decoración de funciones, usando functools, en Python nos permite eliminar código repetitivo que debemos escribir una y otra vez, y también nos permite modificar funciones existentes con unas pocas lineas de código. Como ejemplo, veamos la tubería que escribí hace tiempo atrás: #!/usr/bin/env python3 import sys, re def grep(expression): while True: text = (yield) […]

‘Contexts’ en Python

En Python, un contexto (context) es una clase que implementa los métodos ‘__enter__’ y ‘__exit__’ los cuales son llamados si la clase en llamada con la palabra reservada ‘with’. Por ejemplo, los descriptores de archivo (file handle) en Python se pueden llamar con un contexto, ahorrando llamar ‘finally’ para cerrar archivos, sin importar si hay […]

Functors en Python

Un ‘functor’ es u objeto el cual puede ser llamado como si fuera una función. En Python simplemente hay que implementar el método ‘__call__’. En este ejemplo, vamos a tomar a los candidatos presidenciales del articulo anterior y vamos a escribir una pequeña clase (llamada SortKey) la cual nos va a permitir ordenar por cualquier […]

Slots, Abstracts classes en Python 3

¿Se acuerdan del ejemplo anterior usando classes en Python? En este caso hice un par de cambios para aprender más sobre clases abstractas y slots (una manera de ahorrar memoria en Python cuando creamos objetos). En este caso: Uso un ‘slot’ para guardar sólo 3 atributos que son definidos en el constructor Declaro la propiedad […]

Guardando datos usando formatos de archivo a la medida, en Python 3

En Venezuela una de las pocas formas de saber la paridad entre el dolar “paralelo” y el Bolivar fuerte es utilizando el portal “DolarToday”. El sitio web (https://dolartoday.com/historico-dolar/) ofrece datos que van desde el 2010 hasta el presente, en los cuales puede ver la paridad entre las dos monedas. En un arranque de ociosidad, decidí […]

Guardando y recuperando datos en Python usando Pickle

Muy fácil de usar. Aquí les muestro como grabar un objeto (Account) el cual tiene otros objetos adentro (lista de objetos tipo ‘Transaction’). #!/usr/bin/env python3 # @author Jose Vicente Nunez – josevnz@kodeek.com import os, os.path, pickle, tempfile class Transaction: def __init__(self, amount, date, currency=”USD”, conv_rate=1.0, description=None): self.__amount = amount self.__date = date self.__currency = currency […]

¿Qué tienen en común los candidatos presidenciales y el lenguaje Python? Mucho más de lo que usted cree

Al menos Python es más fácil de entender :-). También me dió un excusa para mostrarles un poco de herencia y otros trucos de objetos en el lenguaje: #!/usr/bin/env python3 # A little fun with the candidates for the US presidency for 2016 election year # @author josevnz@kodegeek.com # class Candidate: def __init__(self, name, party, […]

Escribiendo ‘ls’ en Python3

El programa a continuación es un ejemplo de las cosas que se pueden hacer con Python 3. Para mí fue una excusa para aprender lo siguiente: Uso de ‘.format’ para mostrar contenido con formato (mucho mejor que interpolación de cadena de caracteres con ‘%’) La librería ‘OptionParser’ (Mejor que Getoptions) Trucos con ‘list comprehensions’ , […]

Migrando de Python2 a Python3.1+

Si usted es como yo y le gusta tener una lista concisa de las diferencias entonces este enlace, parte del libro de Mark Summerfield, le va a encantar. Por cierto, si esta aprendiendo Python3 entonces comience con Python3.1. Python3.0+ está ya obsoleto y la sintaxis na va a ser mantenida.