[Tutor] Unreadable code explanation

Kent Johnson kent37 at tds.net
Thu Mar 17 18:14:24 CET 2005


Mark Kels wrote:
> Hi list. 
> I have downloaded some code from useless python that was writen buy a
> guy named Sammy Mannaert. The code should show that python can be
> unreadable, and it really is...
> Can anyone explain to me how does this thing works ??
> Here is the code (it prints "python readable ?"):
> f=lambda x="8<:477\02092020162\020\037",y="01001000110100101":reduce(lambda
> x,y:x+y,map(lambda y,x:chr(ord(y)*2+x),x,map(int,y)));print f();
> (it all should be in one line)

Maybe this helps, I just pulled it apart from the inside:

# The original
f=lambda x="8<:477\02092020162\020\037",y="01001000110100101":reduce(lambda x,y:x+y,map(lambda 
y,x:chr(ord(y)*2+x),x,map(int,y)))
print f()

# A silly function to combine a number and a character making a new character
def makeChar(y, x):
     return chr(ord(y)*2+x)

f=lambda x="8<:477\02092020162\020\037",y="01001000110100101":reduce(lambda 
x,y:x+y,map(makeChar,x,map(int,y)))
print f()

# Pull out x and y
x="8<:477\02092020162\020\037"
y="01001000110100101"
yInts = map(int,y)  # This turns y into a list of ints
print 'yInts:', yInts
f=lambda:reduce(lambda x,y:x+y,map(makeChar,x,yInts))
print f()

# Pull out the last lambda - this is the step that combines x and y into a list of chars
chars = map(makeChar,x,yInts)
print 'chars:', chars
f=lambda:reduce(lambda x,y:x+y,chars) # This is just an obscure way to join the list into a string
print f()

f = ''.join(chars)
print f


Kent



More information about the Tutor mailing list