Category: Python | Atom Feed

Dataclasses en python

Aunque para python sea algo nuevo, las dataclasses son bastante comunes en muchos lenguajes funcionales. No es una implementación tan completa, pero ofrece ventajas que pueden ahorrar bastante trabajo.


Evaluación perezosa en python - Apéndice

Una revisión crítica al tipado gradual de datos de python que se ha usado en esta serie de artículos sobre evaluación perezosa.


Ejemplo práctico. Potencias de Fermi-Dirac - Evaluación perezosa en python - Parte 6

Visto cómo conseguir secuencias con evaluación perezosa, ya sólo nos falta conocer en qué poder emplearlas. En este artículo veremos las potencias de Fermi-Dirac y cómo las secuencias de evaluación perezosa nos ayudarán a plantear una solución manejable.


Formalización de la Secuencia Perezosa - Evaluación perezosa en python - Parte 5

Refactorización del código creado hasta ahora para formalizar las clases LazySequence y LazySortedSequence para uso general.


Evaluación perezosa avanzada - Evaluación perezosa en python - Parte 4

Partiendo del algoritmo para la obtención de números primos crearemos una secuencia infinita mediante técnicas de evaluación perezosa que crezca a medida que se necesite. Al final, aplicaremos algunas optimizaciones para el cálculo de números primos.


Memoización - Evaluación perezosa en python - Parte 3

Tercera parte de una serie de artículos dedicados al estudio de la evaluación perezosa en python. En esta parte veremos la técnica de memoización y cómo puede ayudarnos en la implementación de secuencia de evaluaciones.


Secuencias infinitas - Evaluación perezosa en python - Parte 2

Segunda parte de una serie de artículos dedicados al estudio de la evaluación perezosa en python. En esta parte se estudia las secuencia infintas, algunas implementadas con iteradores, y el modo en que se pueden manejar.


Introducción a la “Evaluación Perezosa” - Evaluación perezosa en python - Parte 1

Primera parte de una serie de artículos dedicados al estudio de la evaluación perezosa en python. En esta primera parte se estudia los objetos rango y cómo se pueden generalizar su uso para crear secuencias de la que conocemos cómo calcular un elemento genérico a partir de su posición.


Manejo de rutas con pathlib

Es difícil escribir un script de python que no interaccione con el sistema de ficheros de un modo u otro, por lo que python dispone de varios módulos para tal fin. El objeto Path viene a poner orden entre tantos módulos y funciones para manejo de ficheros. Se puede decir sin duda que usar Path se ha convertido en la forma más pythónica de manipular ficheros y directorios.


Manejo de iteradores

En python existe cierta dualidad entre listas e iteradores. Bastantes de los métodos de la librería estándar que utilizan listas también suelen aceptar iteradores, no siendo necesario convertir previamente el iterador en lista para invocarlos. Incluso es posible sustituir el argumento por una expresión generadora contruida a propósito para la llamada. ¿Es posible usar estos iteradores sin necesidad de convertirlos en listas?


Python Eficiente - Sobre la vida de los objetos

Antes de seguir adelante, necesitamos aclarar qué les pasa a los objetos que creamos en una aplicación. Cuándo se crean, dónde se almacenan y cómo se destruyen. En definitiva, necesitamos conocer mejor la vida de los objetos.

El término de variable que usamos en programación tiene su origen en el …


Clausuras en python - Parte 2

Ámbitos anidados

La importancia de disponer de clausuras va más allá de saber dónde se evalúa la función. Si fuera posible encapsular una función junto con su propio entorno de ejecución, podríamos conseguir que la función tenga “memoria” o, dicho de otro modo, que sea capaz de conservar sus propios …


Clausuras en python - Parte 1

Funciones Lambda

Antes de ver qué son las clausuras (closures), veamos qué tienen las funciones lambda que las hacen tan polémicas algunas veces.

Comencemos con un ejemplo. Te recomiendo que te esfuerces en deducir cómo funciona sin ir a probar cómo funciona. A continuación te pondré algunos valores para que …


Estudio función factorial - numpy

Mientras busco tiempo para preparar algunos artículos sobre cómo hacer la programación python más eficiente, he estado revisando nuevos métodos de programar la función factorial en python aplicando los nuevos conocimientos adquiridos.

Como puse en un artículo anterior, la implementación más compacta de la función factorial sería aplicando la función …


Borrado de un descriptor (corrección de errores)

Tengo que hacer algunas correcciones a la serie de artículos sobre descriptores, en concreto sobre el método __delete__ del protocolo descriptor.

Primero, aclaremos cómo funciona el método __delete__ y en qué se diferencia de __del__. No se trata de métodos destructores tal y como se entiende en otros lenguajes de …


Mutable o inmutable, he ahí el dilema

Info

Disponible también como ipynb

Quien se enfrenta a la documentación de python por primera vez se pregunta porqué esa insistencia en mantener tipos de datos duplicados en versiones mutables e inmutables. Tenemos listas y tuplas que casi hacen lo mismo. En python3, tenemos el tipo inmutable bytes y el …


Mutabilidad de Listas

Info

Puedes visionar este artículo y descargártelo como notebook ipython en http://nbviewer.jupyter.org/5177340

Mucha gente, cuando se enfrenta por primera vez al lenguaje python, no entiende bien el concepto de “inmutabilidad” que tanto repite la documentación al tratar de diferenciar algunos tipos contenedores como tuplas, listas, conjuntos …


Dobleces en python

En el último artículo del blog contaba en qué consistía doblar código1:

…un código que se pliega sobre sí mismo. Un código que te lleva desde un principio a un final por el camino más corto.”

Para ilustrar este concepto voy a usar un trozo de código python que …


Pruebas básicas de python (y scala)

Como continuación del artículo “Cómo contratar a un programador de python” voy a dar las soluciones a algunas de las pruebas básicas que comentaba del proceso de selección. Añado también las soluciones sobre cómo sería con scala y de paso comparamos ambos lenguajes1.

Prueba del “Hello, World!”

Desde que …


Entornos virtuales en python 3.3

Con la nueva versión de python 3.3 se ha incorporado la propuesta PEP-405 que añade al repertorio interno de python la posibilidad de crear entornos virtuales de modo parecido a virtualenv (vimos esta herramienta hace poco al hablar de la instalación de módulos.

Tal como lo define PEP …


Cómo contratar un programador de python

En época de crisis se produce un curioso desequilibrio de las cosas. Por un lado, están los emprendedores que se arriesgan mucho más buscando productos innovadores con los que poder competir mejor, alejados de las tendencias impuestas por las grandes empresas del sector. Son las startups, surgidas como respuestas del …


Instalación de módulos

Resulta habitual la instalación de nuevos módulos o paquetes en nuestra instalación de python, para lo que basta con introducir en el directorio site-packages el fichero del módulo o, en caso de paquetes, el directorio con el paquete. Algunas veces, la instalación requiere compilar e instalar librerías en el sistema …


BOM - marcas de orden de bytes

Los BOM‘s son marcas que aparecen en ficheros y transmisiones de datos para indicar el “orden de los bytes” de la codificación empleada. Si pensamos que el tamaño de cada dato transmitido puede ser 2, 4 u 8 bytes (16bits, 32 bits ó 64 bits), el orden de los …


Descriptores - Parte 3

Hasta ahora hemos visto cómo funcionan los descriptores para acceder a atributos de datos que funcionan como “propiedades” (property). Pero al iniciar esta serie de artículos dije que los descriptores son también “los responsables del funcionamiento de métodos, métodos estáticos, métodos de clase y del mecanismo super() responsable de la …


Problemas con los nombres largos en NTFS

Un buen día comenté a un compañero de trabajo que en su carpeta compartida del servidor de ficheros pronto iba a tener problemas al usar nombres de carpetas demasiado largos. El explorador de ficheros ya se negaba a listas algunas carpetas y el problema iba a más con algunas herramientas …

© Chema Cortés. Built using Pelican. Theme is subtle by Carey Metcalfe. Based on svbhack by Giulio Fidente.