Boris Borcic a écrit : > Hello Bruno, > > Bruno Desthuilliers wrote: > >> Boris Borcic wrote: >> >>>> Do you have any ideas? >>> >>> >>> you could use a recursive generator, like >>> >>> def genAllChildren(self) : >>> for child in self.children : >>> yield child >>> for childchild in child.genAllChildren() : >>> yield childchild >> >> >> >> Or how to *not* address the real problem... >> >> Boris, using a generator may be a pretty good idea, but *not* as a way >> to solve a problem that happens to be a FAQ !-) >> > > Sorry, but I don't understand your reasoning.
It's quite simple. The OP's problem is well-known (it's a FAQ), and easy to solve. The righ answer to it is obviously to give a link to the FAQ (or take time to re-explain it for the zillionth time), not to propose a workaround. > How can you exclude that > the OP /may/ find that a generator neatly solves his problem ? I don't exclude it, and explicitly mentioned in whole letters that, I quote, it "may be a pretty good idea". And actually, the OP's problem is really with default values evaluation scheme - something that every Python programmer should know, because there are cases where you cannot solve it with a generator-based solution !-) > The use > of a default value was not an end in itself, was it ? If the OP has other reasons to want to use an accumulator based solution - which we don't know - then the possibility to use a default value is important. > - and the quirks of > default values being FAQ stuff don't change that. Sure if nobody had > covered that aspect, but a couple other posters did... Yes, but you forgot to mention that - and I would not have post any comment on your solution if you had explicitly mentioned the FAQ or these other answers. > Mmmmhhh somehow it feels like if there is any issue here, it is about > defending the credo "there ought to exist only one obvious way to do it" > ?... Nope, it's about trying to make sure that anyone googling for a similar problem will notice the canonical solution somehow. -- http://mail.python.org/mailman/listinfo/python-list