Python Cookbook学习记录 ch1_3_2013/10/21
2013-10-21 22:53
549 查看
1.3测试一个对象是否是字符串
如果让我写代码,第一反应肯定会采用书中提到的的槽糕的类型测试,使用type(),但是这可能导致Unicode码不能通过测试,甚至任何str子类都不行。
书中推荐方法如下
isinstance是Python的内建函数,语法:
如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例, 返回True。如果object不是一个给定类型的的对象, 则返回结果总是False
可以看到所有的string类型的都是基类basestring的实例或者子类的实例,所以无论是字符串还是Unicode都是返回True
但是isAString也不是完美的,对于Python标准库的UserString模块的UserString类实例的检查是无能无力的,主要原因是UserString不是从basestring派生出来的。
书中给出的解决方案是字符串都支持如下操作:
只要支持anobj+''此操作,就是字符串,否则就不是,但是这样子 效率比较低
如果让我写代码,第一反应肯定会采用书中提到的的槽糕的类型测试,使用type(),但是这可能导致Unicode码不能通过测试,甚至任何str子类都不行。
>>> def isExactlyAString(anobj): return type(anobj) is type('') >>> print isExactlyAString('abc') True >>> print isExactlyAString(u'abc') False
书中推荐方法如下
>>> def isAString(anobj): return isinstance(anobj,basestring) >>> print isAString('abc') True >>> print isAString(u'abc') True
isinstance是Python的内建函数,语法:
isinstance(object, classinfo)
如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例, 返回True。如果object不是一个给定类型的的对象, 则返回结果总是False
可以看到所有的string类型的都是基类basestring的实例或者子类的实例,所以无论是字符串还是Unicode都是返回True
但是isAString也不是完美的,对于Python标准库的UserString模块的UserString类实例的检查是无能无力的,主要原因是UserString不是从basestring派生出来的。
书中给出的解决方案是字符串都支持如下操作:
>>> def isStingLike(anobj): try:anobj+'' except:return False else:return True
只要支持anobj+''此操作,就是字符串,否则就不是,但是这样子 效率比较低
相关文章推荐
- Python Cookbook学习记录 ch1_2_2013/10/21
- Python Cookbook学习记录 ch1_17_2013/10/25
- Python Cookbook学习记录 ch1_19_2013/10/27
- Python Cookbook学习记录 ch1_4_2013/10/22
- Python Cookbook学习记录 ch1_12_2013/10/24
- Python Cookbook学习记录 ch1_9_2013/10/23
- Python Cookbook学习记录 ch1_1_2013/10/20
- Python Cookbook学习记录 ch1_5_2013/10/22
- Python Cookbook学习记录 ch1_6_2013/10/22
- Python Cookbook学习记录 ch1_8_2013/10/23
- Python Cookbook学习记录 ch1_10_2013/10/23
- Python Cookbook学习记录 ch1_14_2013/10/25
- Python Cookbook学习记录 ch1_7_2013/10/22
- Python Cookbook学习记录 ch1_13_2013/10/24
- Python Cookbook学习记录 ch1_15_2013/10/25
- Python Cookbook学习记录 ch2_3_2013/10/27
- Python Cookbook学习记录 ch4_6/7_2013/11/2
- Python Cookbook学习记录 ch3_5/8_2013/10/30
- Python Cookbook学习记录 ch3_1/2_2013/10/29
- Python Cookbook学习记录 ch6_2_2013/11/7