[Tutor] "if clause" in list comprehensions.

Sander Sweers sander.sweers at gmail.com
Mon Oct 19 21:57:08 CEST 2009


2009/10/19 Alan Gauld <alan.gauld at btinternet.com>:
>> Usually it is recommended to use hasattr() instead of type()
>>   hasattr(s, 'upper')
>
> Nope, they do  completely different things
> I think you might be thinking of isinstance() which can be used instead of
> type(). I see you use hasattr as a means of testing for a method but that is
> still different from testing type - the method names might be the same but
> the functions be completely different in effect!

Indeed, I was and stand corrected.

>>> In order to use a list comprehension I created this function instead.
>>> def upperfy(item)
>>>   try:
>>>       item = item.upper()
>>>   except AttributeError:
>>>       pass
>>>   return item
>
>> I would move return item under the except and remove the pass, other
>> might disagree on this.
>
> I would :-)
> Doing that would result in None being returned for each successful
> conversion. The OPs code is correct (even if unnecessary)

I missed that the try: did not return anything. I was thinking more of
something like this.

def upperfy(item):
    try:
        item.upper()
        return item
    except AttributeError:
        return item

Thanks for correcting me!

Greets
Sander

PS: Note to self, never reply in a hurry :-(


More information about the Tutor mailing list