假设您有以下Python2代码:
#!/usr/bin/env python
import struct
struct.pack('s', 'hello')
这在Python2下可以正常工作,但是它不会在Python3下运行,因为结构包改变。结构包现在需要一个bytes对象作为字符串标识符,而不再是字符串。在Python3下运行此代码的修复程序如下:
^{cd1>。但同样,这段代码不会在Python2下运行:-)
我正在尝试独立于版本的代码,因为我不想强迫任何人安装python2或3。在
让这段代码独立于版本的最佳方法是什么?在
Tags:
python2}类型则变成了{}。实际上,您是将python2中的bytestrings和python3中的Unicode字符串发送到
str
类型在python3中基本上被重命名为bytes
,而{struct.pack()
。在正确的解决方法可能是在python2和python3中到处使用Unicode(因此在使用
struct.pack()
时总是进行编码,而不管Python的版本是什么)。在另一种方法是使用isinstance测试:
这在python2和python3中都有效,因为在python2中,}的别名。在
bytes
是{相关问题 更多 >
编程相关推荐