Should NoneType be iterable?

Neal Becker ndbecker2 at gmail.com
Mon Jun 19 14:12:54 EDT 2023


On Mon, Jun 19, 2023 at 12:42 PM Chris Angelico via Python-list <
python-list at python.org> wrote:

> On Tue, 20 Jun 2023 at 02:37, Peter Bona via Python-list
> <python-list at python.org> wrote:
> >
> > Hi
> >
> > I am wondering if there has been any discussion why NoneType  is not
> iterable My feeling is that it should be.
> > Sometimes I am using API calls which return None.
> > If there is a return value (which is iterable) I am using a for loop to
> iterate.
> >
> > Now I am getting 'TypeError: 'NoneType' object is not iterable'.
> >
> > (Examples are taken from here
> https://rollbar.com/blog/python-typeerror-nonetype-object-is-not-iterable/
> )
> > Example 1:
> > mylist = None
> > for x in mylist:
> >     print(x)  <== will raise TypeError: 'NoneType' object is not iterable
> > Solution: extra If statement
> > if mylist is not None:
> >     for x in mylist:
> >         print(x)
> >
> >
> > I think Python should handle this case gracefully: if a code would
> iterate over None: it should not run any step. but proceed the next
> statement.
> >
> > Has this been discussed or proposed?
> >
>
> Try this instead:
>
> for x in mylist or ():
>
> Now a None list will skip iteration entirely, allowing you to get the
> effect you want :)
>
> ChrisA
> --
> https://mail.python.org/mailman/listinfo/python-list
>
I prefer iteration of None to be an error, as in my usage it usually
indicates a mistake that I'd want to catch


More information about the Python-list mailing list