Stephen, dropwhile(None, ...) was an example, takewhile(None, ...) doesn't
works either and it makes a lot of sense IMO.

On Thu, Nov 3, 2016 at 7:07 AM, Stephen J. Turnbull <
turnbull.stephen...@u.tsukuba.ac.jp> wrote:

> Francisco Couzo writes:
>
>  > I'd be interested in writing a patch to make itertools more consistent
> if
>  > there's a consensus.
>
> I don't understand what you mean by "consistent".  I would argue that
> in Python, an argument of None means "use the TOOWTDI default".  For
> "filterfalse", bool() is pretty obvious for the default predicate
> since most Python classes do have a boolean interpretation.  For
> "groupby", I guess the identity is the "intuitive" default.  But for
> dropwhile, bool() or the identity seem like obvious choices, but
> intuitively they're not very useful since the head of what's left is a
> false-y.  When would you want that?  Typically false-ies are "nothing
> to see here, people, move along" values.  I guess that consideration
> suggest lambda x: not(x), but I don't see why one would want to spell
> that dropwhile(None, ...) rather than dropwhile(not, ...), especially
> since in many contexts what you might really want (and expect None to
> default to) is dropwhile(lambda x: x is None, ...).
>
> Bottom line for me is that this use (and non-use) of None is consistent
> with Python practice regarding defaults.
>
> So, "accepts None" vs "doesn't accept None" doesn't seem to me to be
> an important enough consistency to impose unobvious semantics on
> dropwhile(None, ...).
>
>
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to