<[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > Hello everyone, I'm experimenting with python and i'm following this > tutorial: > http://docs.python.org/tut/node6.html#SECTION006400000000000000000 I'm > in section 4.7.5 Lambda Forms. In this section I was working along and > I noticed something strange. It happened because of a typo. Below is > a copy/paste from my idle session: > >>>>def make_incrementor(n): > return lambda x: x+n > >>>>f=make_incrementor(42) >>>>f(0) > 42 >>>>f(1) > 43 >>>>f(10) > 52 >>>>f(0) > 42 >>>>f(01) > 43 >>>>f(02) > 44 >>>>f(010) > 50 >>>>42+010 > 50 > > The first f(01) was a mistake. I accidentally forgot to delete the > zero, but to my suprise, it yielded the result I expected. So, I tried > it again, and viola, the right answer. So, I decided to really try and > throw it for a loop, f(010), and it produced 50. I expected 52 > (42+10). Why doesn't python ignore the first zero and produce a result > of 52?
That's because python interprets 010 as *octal* 10 which is *decimal* 8. Thus 42+010 = 42+8 = 50 which is quite as it should be... Regards, Christian -- http://mail.python.org/mailman/listinfo/python-list