[Python-Dev] Deprecate from __future__ import unicode_literals? (original) (raw)

Nick Coghlan ncoghlan at gmail.com
Sat Dec 17 10:59:19 EST 2016


On 17 December 2016 at 21:58, Serhiy Storchaka <storchaka at gmail.com> wrote:

On 17.12.16 13:44, Christian Heimes wrote:

On 2016-12-17 10:06, Serhiy Storchaka wrote:

On 16.12.16 21:24, Guido van Rossum wrote:

e.g. the argument to getattr() -- I still hear of code that breaks due to this occasionally)

What is the problem with unicode in getattr()? Unicode attribute name is converted to str, and since the result is cached, this even don't add much overhead. It breaks the str optimization of dicts. Dict with str-only keys are special-cased in Python 2. getattr() converts a unicode to str and passes a str to PyObjectGetAttr().

getattr() may do the right thing, but directly accessing dict doesn't.

python-future has a good write-up of the benefits and drawbacks, as they originally recommended it unconditionally when modernising code, and myself, Armin Ronacher, and a few others convinced them to be a little more judicious in suggesting it to people: http://python-future.org/unicode_literals.html

However, that page also points out that whether or not it's likely to help more than it hurts depends a lot on which version of Python you're starting from:

In cases like Django where folks successfully adopted the "unicode_literals" import for modernisation purposes, it was a matter of aiming to get to that "Python 3 native, with Python 2 also supported" structure as soon as possible (the fact that Django is structured primarily as an object oriented framework likely helped with that, as it has a lot of control over the data types user applications end up encountering).

Cheers, Nick.

-- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20161218/d35e843c/attachment-0001.html>



More information about the Python-Dev mailing list