On Tue, May 7, 2019 at 11:43 AM Ricky Teachey <ri...@teachey.org> wrote:

> def eat_iterable(yummy_iterable):
>     if isinstance(yummy_iterable, str):
>         raise TypeError("BLECH! Strings are ATOMIC in this context,
> mmkay??")
>     tasty_list = list(yummy_iterable)
>     # digest list...
>
> The design decision to make strs sequence-like was definitely a good one
> with a huge number of advantages. But we all know that sometimes, treating
> strs just like all other kinds of sequences is very inconvenient and isn't
> really what we want.
>

I've always thought this was a wart in Python, and the one type error that
does show up a lot. (with true division now, it's the only type error that
shows up a lot...)

But the "problem" isn't that strings are a sequence -- as you say that is
handy. The problem is that there is now character type -- so a string is
not a sequence of characters, it's a sequence of length-1 strings -- which
leads to potentially infinite recursion as you drill down to get the single
item.

But introducing a character type has been rejected multiple times. Oh well.


> This leads to isinstance() checking, which feels very non-python every
> time I do it.
>
Agreed. And it's only an adequate solution because for all intents and
purposes, there is only one string type -- it would be very rare to duck
type a string.

> It would be kind of nice if list, tuple, and set had alt constructors that
> disallowed things that aren't REALLY sequences of individual atomic items
>
yeach! as you said, a string is a sequence, and that's a good thing.

and dicts being an iterable of the keys is kind of nice, too -- and once
you have that, they they should be able to be passed into into sequence
constructors.

(and I actually have done list(a_dict) on purpose when I needed a list of
the keys in a dict.




-- 
Christopher Barker, PhD

Python Language Consulting
  - Teaching
  - Scientific Software Development
  - Desktop GUI and Web Development
  - wxPython, numpy, scipy, Cython
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to