[BangPypers] Issue with list comprehension

Dhananjay Nene dhananjay.nene at gmail.com
Wed Oct 30 13:46:25 CET 2013


Thats surprising. The code runs just fine

http://ideone.com/06qjoM

(Ans: 986)

As an aside I renamed _sum to sum_

When avoiding naming conflicts, its recommended to postfix a underscore

Prefixing an underscore is to provide a hint that the value that gets
assigned to the variable is going to be ignore (ie. that variable
itself is going to be ignored)

Dhananjay


On Wed, Oct 30, 2013 at 5:42 PM, Anant <TECHIE> <anant.techie at gmail.com> wrote:
> Hi folks,
>
> I am new to Python (have been on Java for 8 years), but I have quickly
> grasped its style.
>
> While working on a problem (as Python practice) to generate fibonacci
> numbers using generators and list comprehension, I ran into an issue.
>
> Here's my code:
>
> *import itertools*
> *
> *
> *def fibonacci():*
> *    a, b = 0, 1*
> *    while True:*
> * yield b*
> * a, b = b, a+b*
> *
> *
> *fib=fibonacci()
> *
> *_sum=sum([n for n in itertools.takewhile(lambda x: x < 400, fib)])*
> *print _sum*
>
> Basically, I wanted to sum up all the fib numbers till 400.
> *This code runs fine when run on REPL (shell). But when I run it*
> *as a script, i get following error:*
>
> Traceback (most recent call last):
>   File "2.py", line 10, in <module>
>     _sum=sum([n for n in itertools.takewhile(lambda x: x < 400, fib)])
> TypeError: 'int' object is not callable
>
>
>  Python version: 2.7.3
>
> Is there a bug in Python or am I missing something? Why does this only work
> in REPL
> and not as shell script?
>
> Thanks for help.
>
> Cheers,
> Anant
> _______________________________________________
> BangPypers mailing list
> BangPypers at python.org
> https://mail.python.org/mailman/listinfo/bangpypers


More information about the BangPypers mailing list