gpt4 book ai didi

python-3.x - 为什么将字节传递给类 str 构造函数很特别?

转载 作者:行者123 更新时间:2023-12-01 02:31:28 25 4
gpt4 key购买 nike

官方 Python3 文档是这样说的,关于将 bytes 传递给 class str 的单参数构造函数:

Passing a bytes object to str() without the encoding or errors arguments falls under the first case of returning the informal string representation (see also the -b command-line option to Python).

引用:https://docs.python.org/3/library/stdtypes.html#str

非正式的字符串表示 -> 哈?

使用 Python 控制台 (REPL),我看到了以下异常情况:

>>> ''
''
>>> b''
b''
>>> str()
''
>>> str('')
''
>>> str(b'')
"b''" # What the heck is this?
>>> str(b'abc')
"b'abc'"
>>> "x" + str(b'')
"xb''" # Woah.

(问题标题可以改进——我正在努力寻找一个更好的问题。请帮助澄清。)

最佳答案

str 背后的概念似乎是它返回一个“漂亮的可打印”字符串,通常以人类可理解的 形式。 documentation实际上使用了短语“nicely printable”:

If neither encoding nor errors is given, str(object) returns object.__str__(), which is the “informal” or nicely printable string representation of object. For string objects, this is the string itself. If object does not have a __str__() method, then str() falls back to returning repr(object).

考虑到这一点,请注意元组或列表的 str 会生成字符串版本,例如:

>>> str( (1, 2) )
'(1, 2)'
>>> str( [1, 3, 5] )
'[1, 3, 5]'

Python 将以上内容视为这些对象的“可打印”形式。以此为背景,以下似乎更合理一些:

>>> str(b'abc')
"b'abc'"

没有提供编码,字节 b'abc' 只是字节,不是字符。因此,str 退回到“nicely printable”形式,六字符字符串 b'abc' 是 nicely printable。

关于python-3.x - 为什么将字节传递给类 str 构造函数很特别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29726013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com