博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
测试一个对象是否是类字符串
阅读量:5222 次
发布时间:2019-06-14

本文共 831 字,大约阅读时间需要 2 分钟。

有时候需要测试一个对象,尤其是在写一个函数或则方法到时候,需要测试传入的参数是否是一个字符串(或这个对象是否类似于字符串的行为):

下面的方式是利用内建的isinstance和basestring来简单快速的检查某个对象是否是字符串或Unicode对象的方法,如下:

def isAString(anobj):    return isinstance(anobj, basestring)

我们可能第一反映会使用type方法进行类型测试:

def isAString(anobj):    return type(anobj) is type('') 这种方式非常不pythonic,而且Unicode对象无法通过检测。

第一种检测方式则要好很多,内建到basestring是str和Unicode类型到共同基类,任何类字符串的自定义类型都应该从basestring派生,这样能保证isinstance正常工作。不过,isinstance方式也不是100%完美的检测方案,对于Python标准库中的UserString模块到UserString类到实例,无法通过检测。UserString对象是明显的类字符串对象,由于它不是从basestring派生的。如果要支持这种类型检测,可以直接检查一个对象到行为是否真的像字符串一样,例如:

def isStringLike(anobj):    try:        anobj+''    except:        return False    return True

这个方法比isAString函数慢很多,但适用于UserString的检测也适于str和unicode。

小结:Python中通常的类型检查方法是所谓的鸭子判断法:如果它走路像鸭子,叫声也像鸭子,那么对于我们来说它就是鸭子了。

转载于:https://www.cnblogs.com/JustToNight/p/4416026.html

你可能感兴趣的文章
layui父页面执行子页面方法
查看>>
如何破解域管理员密码
查看>>
Windows Server 2008 R2忘记管理员密码后的解决方法
查看>>
IE11兼容IE8的设置
查看>>
windows server 2008 R2 怎么集成USB3.0驱动
查看>>
Foxmail:导入联系人
查看>>
vue:axios二次封装,接口统一存放
查看>>
vue中router与route的区别
查看>>
js 时间对象方法
查看>>
网络请求返回HTTP状态码(404,400,500)
查看>>
Spring的JdbcTemplate、NamedParameterJdbcTemplate、SimpleJdbcTemplate
查看>>
Mac下使用crontab来实现定时任务
查看>>
303. Range Sum Query - Immutable
查看>>
图片加载失败显示默认图片占位符
查看>>
【★】浅谈计算机与随机数
查看>>
《代码阅读方法与实现》阅读笔记一
查看>>
解决 sublime text3 运行python文件无法input的问题
查看>>
javascript面相对象编程,封装与继承
查看>>
Atlas命名空间Sys.Data下控件介绍——DataColumn,DataRow和DataTable
查看>>
Java中正则表达式的使用
查看>>