I am afraid that this is the first time in which I would probably need something explained to me as if I were a little child. I am having a hard time getting this through my thick skull. What in the world is wrong with this!?
''' ########################################################### ''' def generatorFunction(sequence=['item1', 'item2', 'item3']): for item in sequence: yield item yieldedValue = generatorFunction() '''this seems to work perfectly.''' print '-' * 32 print yieldedValue # <generator object at 0xb723014c> print yieldedValue.next() # item1 print yieldedValue.next() # item2 print yieldedValue.next() # item3 '''this is where things don't make any sense!''' print '-' * 32 print generatorFunction() # <generator object at 0xb723022c> print generatorFunction().next() # item1 print generatorFunction().next() # item1 print generatorFunction().next() # item1 ''' ########################################################### ''' the first set of calls assigned to yieldedValue work but the second set without assignment don't. I asked for help on this at #python (I love those people in there!) and was told the following... generatorFunction() is a call (obvious) when calling the second set, I am resetting the iteration and this explains why I only and always get item1. ok. *but* why in the world does the first set of calls work? technically, isn't yieldedValue == generatorFunction() on a name basis? I mean isn't the following technically the same? generatorFunction() yieldedValue = generatorFunction() aren't they both the same? To me they should be but obviously this creates the point of this paradox. I don't understand what is happening here... Can someone care to explain why the assignment works but not the direct call? In a sense shouldn't the assignment yield the same results as the direct call and vice versa? I am confused :( Thank you for any help on this! -- http://mail.python.org/mailman/listinfo/python-list