看起来Python2有PyString_Type,而Python3有PyBytes_Type。
引擎盖下面是怎么回事?
我正在编写一个C++包装器(目前正在包装Python3,但希望稍后添加Python2支持),我刚刚开始处理包装字符串的任务。
2和3都为字节字符串和Unicode字符串提供了单独的支持,但它们只是进行了一些重命名,这是正确的吗?
如果是这样,那么这张表正确吗?:
Py2 byte-string ~ PyString_Type Py2 Unicode-string ~ PyUnicode_Type
Py3 byte-string ~ PyBytes_Type Py3 Unicode-string ~ ?如果是的话,如何完成呢?
编辑:字符串的Python2文档说:
这些函数已在Python3.x*中重命名为PyBytes_ 。除非另有说明,3.x中可用的PyBytes函数被别名为它们的PyString_*等效项,以帮助移植。
发布于 2014-12-13 15:47:50
在Python2中,str包含字节(bytes == str类型),unicode包含Unicode字符串。因此,2.x有效地具有三种类型。
在Python3中,bytes包含字节,str包含Unicode字符串。3.x中的str类型是2.x的unicode类型。因此,3.x有效地具有两种类型。这是您应该采取的概念性方法,任何与2.x相关的工作都应该以这种方式将Unicode字符串和字节分开。
基于文档中的本节,这意味着在Unicode字符串的2.x和3.x中都使用了PyUnicode。PyBytes用于两种类型中的字节字符串,而PyString类型在Python2.x中只有意义。
https://stackoverflow.com/questions/27460578
复制相似问题