python 菜谱(python cookbook) 1.3 测试一个对象是否是字符串

任务:测试一个对象是否是字符串

对于这个问题,很多人会考虑使用type来解决:type(obj) is type('')。

但是问题是type('')得到的返回是<type'str'>,而在python里面字符串是包括string和unicode(其实还有userstring,不过目前不推荐使用,这个可以称为类string对象),显然unicode对象无法通过这个解决方案。

内置函数instance和basestring就能很好的解决这个问题(不过对于userstring也是无能为力):

def isString(anbj): return isinstance(anbj,basestring)

实际上上面的方案能使用绝大部分场景(对于UserString),但是严格意义上来说,我们只是从所谓的“属性”来检查是否属于字符串对象,还需要从“行为”上来对对象进行检验。比如通过一些字符串操作。