为什么 python 需要 unicode 类型,因为我可以直接用任何 unicode 字符声明一个变量?
why do python need unicode type since I can declare a variable directly with any unicode character?
我几天前仔细阅读了有关 unicode 痛苦的文章,并在几个小时前提出了这个问题:
但是最近我想到了一个奇怪的问题。
我发现这些代码工作正常:
chinese = ['中文', '你好'] # py2, these are bytes, type is str
with open('filename', 'wb') as f:
f.writelines(chinese)
因为我可以在 py2 和 py3 中直接用任何 unicode 字符声明一个变量,python(或者我们)得到 unicode 类型 涉及什么?我们不能在整个程序中只使用 str(py2) 和 bytes(py3) 类型吗?那么所谓的unicode pain就不存在了
任何人都可以给我一些见解吗?
Since I can declare a variable directly with any unicode characters [...]
但这不是你所做的。它们可能看起来 像字符,但它们在源文件中被编码为字节。如果您尝试对这些值做任何实际有用的事情,例如切片,下标,取长度,然后一切都崩溃了。 那就是"Unicode pain"。
>>> '中文'[1]
'\xb8'
我几天前仔细阅读了有关 unicode 痛苦的文章,并在几个小时前提出了这个问题:
但是最近我想到了一个奇怪的问题。
我发现这些代码工作正常:
chinese = ['中文', '你好'] # py2, these are bytes, type is str
with open('filename', 'wb') as f:
f.writelines(chinese)
因为我可以在 py2 和 py3 中直接用任何 unicode 字符声明一个变量,python(或者我们)得到 unicode 类型 涉及什么?我们不能在整个程序中只使用 str(py2) 和 bytes(py3) 类型吗?那么所谓的unicode pain就不存在了
任何人都可以给我一些见解吗?
Since I can declare a variable directly with any unicode characters [...]
但这不是你所做的。它们可能看起来 像字符,但它们在源文件中被编码为字节。如果您尝试对这些值做任何实际有用的事情,例如切片,下标,取长度,然后一切都崩溃了。 那就是"Unicode pain"。
>>> '中文'[1]
'\xb8'