Mostrando las entradas con la etiqueta python. Mostrar todas las entradas
Mostrando las entradas con la etiqueta python. Mostrar todas las entradas

martes, octubre 20, 2009

Python y programación funcional

La programación funcional es uno de los paradigmas que más me interesa dentro de los conocidos, me he divertido con lenguajes funcionales como Haskell, Erlang y un poquito de LISP. Pero dado que mi lenguaje preferido es Python, y además en el cual trabajo a diario, estuve divirtiéndome, buscando hacer las cosas lo más similar al estilo funcional. Y como era de esperar, Python me ha dado *casi* todo de lo que esperaba.

Veamos algunas formas de como Python se *acerca* a un mundo funcional:

Factorial


# utilizando lambdas y algunas cositas del paradigma imperativo
fact = lambda n: 1 if n <=0 else fact(n-1)*n

# algo un poquito más interesante
fact = lambda n: (1 and n <=0) or fact(n-1)*n

# utilizando reduce y lambdas
fact = lambda n: reduce(lambda x,y:x*y, xrange(1,n+1) or [1])

# pequeño cambio utilizando el modulo operator
import operator
fact = lambda n: reduce(operator.mul, xrange(1,n+1) or [1])


Generalización de la función boolean AND


# utilizando un iterable como argumento
g_and = lambda args: bool(args[0]) and (g_and(args[1:]) if args[1:] else True)

# utilizando los *args magic de python
gm_and = lambda *args: bool(args[0]) and (g_and(*args[1:]) if args[1:] else True)

>>> g_and([1,2,3])
True
>>> g_and([1,2,0])
False
>>> g_and([1,1,0,1])
False

>>> gm_and(True,True,True,False)
False
>>> gm_and(True,True,True,True)
True
>>> gm_and(False,False,False)
False

Listas por comprensión


>>> even = lambda n: n % 2
>>> evens = [n for n in range(10) if even(n)]

>>> words = ['Hello', 'Python', 'World']
>>> first_letter = [c[0] for c in words]


Otros demonios
Si bien son ejemplos muy básicos, y no intentan enseñar nada nuevo, la idea era mostrar que Python, es un lenguaje que no fue pensado para un paradigma determinado (como Smalltalk o Java), fue pensado como un lenguaje completo, fácil, simple, que una mucho de varios mundos, que se adhiera a la filosofia Unix, y sobretodo flexible.

No estoy diciendo tampoco, de que sea el lenguaje más adecuado para todo, simplemente, expreso mi satisfacción como programador al usar un lenguaje con todas estás características :).

viernes, enero 04, 2008

Random MD5 hash in python

I've been working generating MD5 hashes. I wrote a python module called RandomMD5:


import hashlib
import random

def new():
m = hashlib.md5()
m.update(str(random.random()))
return m.hexdigest()


This module generate a new md5 hash randomically, it's to useful for any kind of security sessions (like web session, chat session, etc.)


import RandomMD5
...
import ChatServer

s = ChatServer.Session()

md5_hash = RandomMD5.new()

s.SessionKey = md5_hash

miércoles, diciembre 19, 2007

Text Processing in Python by David Mertz

Looking in the famous IBM developerWorks Section, I found some articles, called "Charming in Python" by David Mertz. Searching in google for the author, I found his web http://gnosis.cx . It's incredible that I don't know anything about it, and It's incredible that I don't know his excellent book Text Proccesing in Python. The good news is that you can download the book, in eight .txt files. Go there and download it. You must.

jueves, marzo 08, 2007

python to exe? Excelente!!

En mi trabajo tengo la necesidad de usar Windows, por ende me arme un compendio de herramientas las cuales utilizó en Linux. Entre ellas están Python, crypt de unix, bzip2 for windows, grep for windows (o wingrep), etc.
Por lo general algo algunas tareas en python y corro los scripts desde mi maquina que lo tiene instalado, pero sucede que cuando quiero ejecutarlo en otra maquina o darselo a algun compañero para que lo ejecute, comienza el problema de que yo tengo python y el/la no.

Hoy buscando por internet encontre una herramienta, que a mi criterio es EXCELENTE!. Se llama py2exe (http://www.py2exe.org), y lo que hace es convertir codigo python en lenguaje de maquina.

La verdad es que me resulto muy sencillo de utilizar y muy bueno el resultado. Quizá el codigo final no es tan rapdio y optimó como cuando se programa y compila en C, pero para mi es lo suficientemente bueno como para comenzar a utilizarlo.

El tutorial que se encuentra en la pagina (http://www.py2exe.org/index.cgi/Tutorial) describe sencillamente y claramente los pasos a seguir para obtener un EXE a partir de un PY.

Hoy en aproximadamente 1 hora converti a EXE unos 4 proyectos sin obtener conflictos de ningun tipo y los distribui a 2 maquinas, que no tienen python instalado, y corrieron de forma perfecta.

La verdad felicito a los integrantes del proyecto PY2EXE. Congratulations Py2EXE Team!!