1.使用内建方法
def isAString(var): return isinstance(var, basestring)
示例:
>>> def isAString(var):... return isinstance(var, basestring)...>>> isAString('a')True>>> isAString(1)False
但是这个方法不能测试UserString, 如果需要支持UserString, 可以直接检查这个对象能不能执行真正的字符串的操作.
2.使用duck typing 方法
def isStringLike(var): try: var + '' except: return False else: return True
示例:
>>> def isStringLike(var):... try: var + ''... except: return False... else: return True...>>> isStringLike('a')True>>> isStringLike(1)False
适用于UserString,str,unicode 以及其他的类字符串.
这就是所谓的鸭子判断法: 如果它走路像鸭子, 叫起来也像鸭子, 那对我们(的需求)来说它就是鸭子.
当然我们可以检查更详细的鸭子特征:
try: anobj.lower( ) + anobj + ''