Hello ,
So my book teach me the wrong principle. But can everything programmed on Eafp. If you dont know if something is a list, a tuple or a string, you can get a lot of nested try except think. Roelof Subject: Re: [Tutor] recursive problem From: rabidpoob...@gmail.com Date: Thu, 9 Sep 2010 15:32:44 -0500 To: rwob...@hotmail.com No you misunderstood me. Eafp is a python design principle. lbyl is common in older languages. Please reply all in the future so our discussion takes place on the list instead of just between us. Sent from my iPhone On Sep 9, 2010, at 1:31 PM, Roelof Wobben <rwob...@hotmail.com> wrote: Oke, So If I understand you right LBYL is more the python way. Wierd that the book im following (Thinking like a computer scientist) is more EAFP. Roelof Subject: Re: [Tutor] recursive problem From: rabidpoob...@gmail.com Date: Thu, 9 Sep 2010 13:24:06 -0500 To: rwob...@hotmail.com It's easier to ask for forgiveness than permission vs. Look before you leap. An example of LBYL would be checking the type of a variable before you use it. EAFP would be just using the variable, and if something goes wrong, handle the exception. It's a core tenet of python software design and goes hand in hand w/ duck typing and other principles. Sent from my iPhone On Sep 9, 2010, at 1:16 PM, Roelof Wobben <rwob...@hotmail.com> wrote: Sorry. Im also new to Python and programming. What does EAFP and LBYL mean ? Roelof From: rabidpoob...@gmail.com Date: Thu, 9 Sep 2010 12:59:46 -0500 To: joel.goldst...@gmail.com CC: tutor@python.org Subject: Re: [Tutor] recursive problem Nope Joel, that's what I meant. Remember EAFP over LBYL! I'm not sure the best way to make sure the object is iterable though. Sent from my iPhone On Sep 9, 2010, at 11:41 AM, Joel Goldstick <joel.goldst...@gmail.com> wrote: On Thu, Sep 9, 2010 at 12:07 PM, Steven D'Aprano <st...@pearwood.info> wrote: On Fri, 10 Sep 2010 01:05:22 am Joel Goldstick wrote: > On Thu, Sep 9, 2010 at 10:26 AM, Luke Paireepinart > > <rabidpoob...@gmail.com>wrote: > > Shouldn't there be a way to do this without type checking? Duck > > typing! > > > > Your post got me thinking. Maybe better to test if the object can > > return > an iter method. If it throws an error, then look at its value. If > it doesn't, then its a list or a tuple It's not clear what you mean by "return an iter method". Taken literally, that would imply the object is a function. I think you mean "*has* an iter method" -- except that's not right either: >>> [].iter Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'list' object has no attribute 'iter' Perhaps you mean an object which can be passed to iter(), but lots of objects can do that, not just lists and tuples: >>> iter("not a list or tuple") <str_iterator object at 0xb7d3520c> >>> iter({1: None, 2: "a", 4: 5}) <dict_keyiterator object at 0xb7d3420c> I was googling, and found that if an object has an __iter__ method it will return it. If not it will throw an error. You are right about more than lists and tuples being iterable. But, in this thread, it was brought up that checking type may not be pythonic. If you wanted to use the same code to find values in a nested list of any objects, you could dispense with the type checking and just see if it is iterable. I'm new to python. Am I off base? -- Steven D'Aprano _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor -- Joel Goldstick _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor