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.
Home | Quién soy | Búsqueda python-es | Atom Feed
Category: Python | Atom Feed
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.
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.
Refactorización del código creado hasta ahora para formalizar las clases LazySequence
y LazySortedSequence
para uso general.
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.
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.
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.
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.
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.
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?
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 …
Á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 …
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 …
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 …
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 …
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 …
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 …
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 …
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 …
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 …
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 …
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 …
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 …
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 …
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.