[Python-Dev] bytes.from_hex() [Was: PEP 332 revival in coordination with pep 349?] (original) (raw)

"Martin v. Löwis" martin at v.loewis.de
Fri Feb 17 23:52:15 CET 2006


Josiah Carlson wrote:

How are users confused?

Users do

py> "Martin v. Löwis".encode("utf-8") Traceback (most recent call last): File "", line 1, in ? UnicodeDecodeError: 'ascii' codec can't decode byte 0xf6 in position 11: ordinal not in range(128)

because they want to convert the string "to Unicode", and they have found a text telling them that .encode("utf-8") is a reasonable method.

What it should tell them is

py> "Martin v. Löwis".encode("utf-8") Traceback (most recent call last): File "", line 1, in ? AttributeError: 'str' object has no attribute 'encode'

bytes.encode CAN only produce bytes.

I don't understand MAL's design, but I believe in that design, bytes.encode could produce anything (say, a list). A codec can convert anything to anything else.

If some users can't understand this (passing different arguments to a function may produce different output),

It's worse than that. The return type depends on the value of the argument. I think there is little precedence for that: normally, the return values depend on the argument values, and, in a polymorphic function, the return type might depend on the argument types (e.g. the arithmetic operations). Also, the return type may depend on the number of arguments (e.g. by requesting a return type in a keyword argument).

then I think that some users are broken beyond repair.

Hmm. I'm speechless.

Regards, Martin



More information about the Python-Dev mailing list