python - python3.x中的StringType和NoneType

标签 python python-3.x

我有一个在 python2.x 代码库中使用 StringType 和 NoneType(类型模块)的代码库。在移植到 Python3 时,测试失败,因为 Python3.x 中的 types 模块没有上述两种类型。

我通过分别用“str”和“None”替换它们来解决问题。我想知道是否有另一种(正确的)方法可以做到这一点。我目前正在做的事情似乎确实有效,但我对此表示怀疑。

Should I stick to the approach I have followed or is there something wrong in what I have done? If so, how do I correct it?

最佳答案

检查None通常通过调用obj is None来完成,而检查字符串通常是isinstance(obj, str)。在 Python 2.x 中检测字符串和 unicode,您可以使用 isinstance(obj, basestring)

如果你使用 2to3 就足够了,但如果你需要一段代码同时在 Py2 和 Py3 中工作,你可能会得到类似的结果:

try:
    return isinstance(obj, basestring)
except NameError:
    return isinstance(obj, str)

关于python - python3.x中的StringType和NoneType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4232111/

相关文章:

python - 运行异步函数时忽略 For 循环(使用 Python API 的 Discord Bot)

python - 对列表内的列表(但不包括其他可迭代对象)进行加肥

python - 作为 REST api 的一部分返回多行字符串

python - 如果条件不那么困惑

要列出的 Python 字符串?

python - 你如何将这个正则表达式习语从 Perl 翻译成 Python?

python - Django: View 未返回 HttpResponse 对象。它返回 None 而不是

python - Flask 不会在 html 中播放视频

python-3.x - 在Python中转换黑白图像中1和0的列表列表

python-3.x - 如何在没有任何模型的情况下使用带有 Django Rest Framework 的 View 集使用 post 方法在 Swagger UI 中传递参数?