python - isinstance ('aaa' , basestring) 和 isinsta

a='aaaa'
print isinstance(a, basestring)#true
print isinstance(a, str)#true

最佳答案

在 3.0 之前的 Python 版本中,有两种字符串“纯字符串”和“Unicode 字符串”。纯字符串 (str) 不能表示拉丁字母表之外的字符(为简单起见,忽略代码页的细节)。 Unicode 字符串 (unicode) 可以表示任何字母表中的字符,包括一些虚构的字符,如克林贡语。

那么为什么有两种字符串呢,难道只有 Unicode 会更好,因为它可以涵盖所有情况吗?好吧,最好只有 Unicode,但 Python 是在 Unicode 成为表示字符串的首选方法之前创建的。在有很多用户的语言中转换字符串类型需要时间,在 Python 3.0 中,最终所有字符串都是 Unicode。

3.0之前的Python字符串的继承层次是:

          object
             |
             |
         basestring
            / \
           /   \
         str  unicode
在 Python 2.3 中引入的

'basestring' 可以被认为是朝着字符串统一方向迈出的一步,因为它可以用来检查对象是 str 还是 unicode 的实例

>>> string1 = "I am a plain string"
>>> string2 = u"I am a unicode string"
>>> isinstance(string1, str)
True
>>> isinstance(string2, str)
False
>>> isinstance(string1, unicode)
False
>>> isinstance(string2, unicode)
True
>>> isinstance(string1, basestring)
True
>>> isinstance(string2, basestring)
True

关于python - isinstance ('aaa' , basestring) 和 isinstance ('aaa' , str) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1979004/

相关文章:

unix - 创建守护进程时执行双叉的原因是什么?

python - Python 格式字符串中的 %s 是什么意思?

python - 如何在python中向后循环?

linux - 如何在 Linux 上的 Bash 中一次删除多个文件?

python - 如何处理boto3的错误?

python - 字典:获取键列表的值列表

mysql - 如何登录mysql并从linux终端查询数据库

python - 为什么在 2012 年 python 中的 pandas 合并比 R 中的 dat

linux - 使用 Git 保留文件权限

linux - 如何在 GNU/Linux 上设置 Subversion (SVN) 服务器 - U