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
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