当前位置: 首页 > 面试题库 >

isinstance('aaa',basestring)和isinstance('aaa',str)有什么区别?

茹元魁
2023-03-14
问题内容
a='aaaa'
print isinstance(a, basestring)#true
print isinstance(a, str)#true

问题答案:

在3.0之前的Python版本中,有两种字符串:“普通字符串”和“
unicode字符串”。普通字符串(str)不能表示拉丁字母之外的字符(为简单起见,忽略代码页的详细信息)。Unicode字符串(unicode)可以代表任何字母的字符,包括虚构的字母,例如Klingon。

那么,为什么要使用两种字符串,仅使用Unicode会更好,因为这将涵盖所有情况?最好只使用Unicode,但是在Unicode是表示字符串的首选方法之前创建了Python。在具有许多用户的语言中转换字符串类型需要花费时间,在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


 类似资料:
  • 问题内容: 这两个代码片段之间有什么区别?使用: 使用isinstance(): 问题答案: 总结答案的内容,迎合继承(派生类的实例也是基类的实例),而检查的相等性type则不(要求类型的标识并拒绝实例)子类型,又称为AKA子类)。 通常,在Python中,你当然希望你的代码支持继承(因​​为继承非常方便,因此停止使用你的代码来使用它会很糟糕!),因此它比检查的身份要糟糕得多,因为它无缝地支持s遗

  • Python 提供了如下两个函数来检查类型: issubclass(cls, class_or_tuple):检查 cls 是否为后一个类或元组包含的多个类中任意类的子类。 isinstance(obj, class_or_tuple):检查 obj 是否为后一个类或元组包含的多个类中任意类的对象。 通过使用上面两个函数,程序可以方便地先执行检查,然后才调用方法,这样可以保证程序不会出现意外情况。

  • 在我的应用程序中,我有一个通过引用接收CV::MAT对象的函数。下面是函数的声明: 这个函数是递归的,在主函数的第一次调用中并不真正需要aaa,所以我只是声明了一个空aaa来将它传递给函数调用。在随后的递归调用中,function生成自己的ch Mat对象。 Main.cpp:75:错误:从“CV::MAT(*)()”类型的临时值初始化“CV::MAT&”类型的非常量引用无效。H:21:错误:在传

  • 我很荣幸展示给你一个FreeRADIUS入门. 这本书将会帮助你部署一个可靠的, 稳定的, 和可扩展的RADIUS服务器在你的环境. 这个章节是用来介绍RADIUS和FreeRADIUS. 我们将会介绍许多理论并且推荐你要留意他. 这将会提供给你关于RADIUS协议工作原理的一个好的基础, 并且将会在后续的章节中提供很多帮助. 在这一章我们将会 了解什么是AAA, 和我们为什么需要他. 学习RAD

  • 本文向大家介绍详谈Java中instanceof和isInstance的区别,包括了详谈Java中instanceof和isInstance的区别的使用技巧和注意事项,需要的朋友参考一下 一次性搞定instanceof和isInstance,instanceof和isInstance长的非常像,用法也很类似,先看看这两个的用法: obj.instanceof(class) 也就是说这个对象是不是这