iterating over a variable which could be None, a single object, or a list

MRAB google at mrabarnett.plus.com
Thu Nov 27 09:36:53 EST 2008


adam carr wrote:
> 2008/11/27 Stefan Behnel <stefan_ml at behnel.de>:
>> adam carr wrote:
>>> I call a function get_items() which returns a list of items.
>>> However, in some cases, it returns just one item.
>>> It returns the item as an object though, not as a list containing one object.
>>> In other cases it simply returns None.
>>>
>>> What is the cleanest way to iterate over the return value of this function?
>>> Or would it be better to fix the get_items() function itself to always
>>> return lists no matter what?
>> Given the name "get_items()" in plural, I'd opt for letting it always
>> return a list. That also reduces the special case of returning None, where
>> it would now return an empty list.
> 
> You are of course right.
> 
> I'm still in the position of having to right code to deal with
> converting None to an empty list and one object to a list with a
> single entry.
> Python casting doesn't work here.
> 
> Maybe it's just wishful thinking, but I would have thought there would
> be a cleaner way of doing this.
> 
Do you have the source code of get_items()? That's what you should look 
at and where you should fix it (unless it's just calling another 
function and returning the result, etc). I wonder whether None is being 
returned because it's reaching the end of the function.



More information about the Python-list mailing list