On Sat, Jan 23, 2021 at 09:11:27PM +1100, Chris Angelico wrote:

> > On the other hand, if we add `open_text()`:
> >
> > * Replacing open with open_text is easier than adding `, encoding="utf-8"`.
> > * Teachers can teach to use `open_text` to open text files. Students
> > can use "utf-8" by default without knowing about what encoding is.
> >
> > So `open_text()` can provide better developer experience, without
> > waiting 10 years.
> 
> But this has a far worse end goal - two open functions with subtly
> incompatible defaults, and a big question of "why should I choose this
> over that".

It has an easy answer:

- Are you opening a text file and you don't know about or want to deal 
  with encodings? Use `open_text`.

- Otherwise, use `open`.

I think that if we moved to an open_text() builtin, it should have the 
simplest possible signature:

    open_text(filename, mode='r')

If you care about anything beyond that, use `open`.


> And if you start using open_text, suddenly your code won't
> work on older Pythons.

"Using older Pythons" is mostly a concern for library maintainers, not 
beginners. A few years from now, Python 3.10 will be the oldest version 
the great majority of beginners will care about, and 3.9 will be as 
irrelevant to them as 3.4 is to us today.

Library maintainers always have to deal with the issue of not being able 
to use the newest functionality, it doesn't prevent us from adding new 
functionality.



-- 
Steve
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/4K7U5KEXEIURFB36ML2GSMJD4HEQ7ZZL/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to