关于日常使用到的一些Python技巧,计划用五个章节完成分享。
使用isinstance来校验类型
因为基于内建类型扩展的用户自定义类型,type()不能准确返回结果,因此在校验对象类型的时候,建议使用isinstance()函数,两者异同如下:
示例:两者都可以用来检测某一变量是否属于某一数据类型
输出 True
示例:两者都可以检测实例化对象是否属于某一个类
输出 True
示例:isinstance()能够判断出子类的实例化对象属于父类,但是type()则不能。
输出 True False
使用literal_eval替代eval
eval()函数将字符串str当成有效的表达式来求值并返回计算结果。其中包含如下三个参数:
eval()函数将任何字符串当做表达式处理,如果globals,locals参数都不指定,表达式将在eval调用的环境中执行,即默认为globals()和locals()函数中包含的所有模块和函数,这就使得eval方法存在一定的安全风险。
假设用户输入的是”__import__(‘os’).system (‘dir’)”,输出又会是什么呢?会看下它打印了当前目录的所有文件列表,如下
ast.literal_eval()方法会判断需要计算的内容计算后是否是安全、合法的Python类型,如果是则进行运算,否则会直接抛出异常。
输出
因此推荐使用ast.literal_eval替代eval。
str() 和repr() 的区别
输出 True [1,2,3,4] '[1,2,3,4]'
判断对象是否为空
在Python中,None、空列表[]、空字典{}、空元组()、0等一系列代表空和无的对象会被转换成False。除此之外的其它对象都会被转化成True。
输出 True
若对你有所帮助,欢迎大家评论、留言、关注,感谢支持!
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!