Re: Is this a closure?
Yes, printReviews() is a closure. In particular, it's closing over the variable self, which it's getting lexically from printSelf(). - Chris On Sun, Aug 31, 2008 at 4:53 PM, ssecorp [EMAIL PROTECTED] wrote: A method on a class: def printSelf(self): def printReviews(): for review in self.reviews: review.printSelf() print Idnbr: , self.idnumber, Reviews: , printReviews() I don't have to pass an argument to printReviews because everything defined inside printSelf is aware of outer variables? Or is that wrong? If it is right, is this what a closure means? Because Python is lexically scoped right? Is lexical scope+closures = organized dynamic scope kind of if you get my point? -- http://mail.python.org/mailman/listinfo/python-list -- Follow the path of the Iguana... http://rebertia.com -- http://mail.python.org/mailman/listinfo/python-list
Re: Is this a closure?
On Sep 1, 9:53 am, ssecorp [EMAIL PROTECTED] wrote: A method on a class: def printSelf(self): def printReviews(): for review in self.reviews: review.printSelf() print Idnbr: , self.idnumber, Reviews: , printReviews() The above appears to be more or less identical in effect to: def printSelf(self): print Idnbr: , self.idnumber, Reviews: for review in self.reviews: review.printSelf() except for spacing and more importantly the second version won't print the gratuitous None value returned by printReviews(). What are you aiming for? If your purpose is to explore/understand lexical scopes, I suggest that you get it right in your head in the context of a simple non-recursive function, then /if necessary/ try to do it in a recursive class method. HTH, John -- http://mail.python.org/mailman/listinfo/python-list