写Python代码的时候经常将一系列操作放在一个语句块中,Python 2.5加入了with语法,实现上下文管理功能,这让代码的可读性更强并且错误更少。最常见的例子就是open,如果不使用with,使用open会是这样:

如果使用with,可以简化为两行:

1、在执行完缩进的代码块后会自动关闭文件。创建上下文管理器实际就是创建一个类,添加__enter__和__exit__方法。看看如何实现open的上下文管理功能:

/2、光会技巧也不够。

自定义上下文管理器确实很方便,但是Python标准库还提供了更易用的上下文管理器工具模块contextlib,它是通过生成器实现的,我们不必再创建类以及__enter__和__exit__这两个特殊的方法:

yield关键词把上下文分割成两部分:yield之前就是__init__中的代码块;yield之后其实就是__exit__中的代码块;yield生成的值会绑定到with语句as子句中的变量(如果没有生成,也就没有as字句)。

2. total_ordering。对比自定义对象需要添加__lt__、__le__、__gt__、__ge__和__eq__等方法,如果使用total_ordering,只需要定义__eq__以及__lt__、__le__、__gt__、__ge__四种之一就可以了:

3. 有时候BUG隐藏的太深,需要对上下文都有清晰的展示来帮助判断。用pdb调试不方便,用print不直观。可以使用如下函数获取当前调用栈:

4. inspect。有时候我们想查看一下对象的一些信息或者做类型检查,也就是自省(检查某些事物以确定它是什么、它知道什么以及它能做什么):

PS: 如果你想兼容Python 2.6以下和Python 3,可以使用collections.MutableMapping:

但是MutableMapping需要额外实现__iter__和__len__。

PPS: MutableMapping是学习实现抽象类的范例:

它继承了Iterable和Sized,而Iterable中通过abstractmethod要求你必须定义__iter__方法,Sized中要求你必须定义__len__方法,否则就会提示:

TypeError: Can't instantiate abstract class MyDict with abstract metho

ds __iter__, __len__

python高级含金量技巧_2020年最新Python开发的高级技巧,面试必学相关推荐

  1. python自动化办公书籍_2020年最新 Python自动化办公(资料完整)

    温馨提示:本信息由[会员:胖子哥]搜集整理发布,版权归原作者及发布者所有,您如有异议请 举报 或者 版权申诉. 2020年最新 Python自动化办公(资料完整) 教材 软件 源码 课件 视频 有没有 ...

  2. python批量读取文件内容_Python之批量读取文件【面试必学】

    原博文 2019-12-24 14:00 − python的os模块可以实现普遍的操作系统功能,并且和平台无关.以下为实现根目录下文件的批量读取. os.listdir(dirname)可以列出dir ...

  3. python教程吾爱破解_2020年最新python入门到精通教程

    2020年最新python入门到精通教程 资源共享吧良心论坛,一直用心为每位会员服务,希望大家能学有所成,今天为大家分享一套2020年最新python入门到精通教程,如果你是0基础想学习python这 ...

  4. python高级用法技巧-Python高级用法总结

    列表推导(list comprehensions) 场景1:将一个三维列表中所有一维数据为a的元素合并,组成新的二维列表. 最简单的方法:新建列表,遍历原三维列表,判断一维数据是否为a,若为a,则将该 ...

  5. python高级调试技巧(一)——原生态的pdb调试

    声明:本文所讲的调试是指不附带任何工具的调试,我们平时使用vs code,pycharm进行调试,包括设置断点.单步执行.多步执行等操作都是IDE设置好的,本文不考虑这些,使用原生态的python调试 ...

  6. python做审计底稿视频_最新Python教学视频,每天自学俩小时,让你offer拿到手软...

    2020最新Python零基础到精通资料教材,干货分享,新基础Python教材,看这里,这里有你想要的所有资源哦,最强笔记,教你怎么入门提升!让你对自己更加有信心,重点是资料都是免费的,免费!!! 如 ...

  7. 零基础学python用哪本书好看-6个Python超酷技巧,原来还能这样用!初学必看

    0.引言 不管学什么,我个人是非常喜欢小技巧(tricks)的,Python 也不例外.著名 Python 技巧大师 Dan Bader 是这样定义 Python Tricks 的. A Python ...

  8. python官网下载步骤图解-最新Python安装图文教程[很详细]

    如今,Python已经成为一种非常主流的编程语言了,很多小伙伴都开学习python,但是对于刚刚接触python的纯小白来说,不太会安装,下面我们就介绍介绍python最新安版本3.7.4的安装教程. ...

  9. 4万字【Python高级编程】保姆式教学,进阶感觉到吃力?学完这些就轻松了

    前几天和一个小伙子聊天时,发现了一个问题,他从零开始学Python,学完列表.字典和函数等基础之后,就开始往爬虫方向进阶学习,结果又花了一个多月的时间,啥也没学成,反而寸步难行. 其实这个问题的主要原 ...

最新文章

  1. linux 错误处理命令,Linux运行脚本命令提示No such file or directory错误的解决办法
  2. zookeeper 源码阅读(2)
  3. python对文件的_python 对文件操作
  4. 整理了Linux常用命令变量
  5. 【Java】一文搞懂 Java 中的枚举,写得非常好!
  6. SMS2003 推送软件包中的日志查看及安装错误代号1633分析
  7. javascript小技巧(转自DooIT)http://www.cnblogs.com/ttyp/archive/2004/11/15/63900.html
  8. 【电源】开关电源、线性稳压电源
  9. DHTML3(表格动态创建,删除行/列,表格行排序,行颜色交替高亮显示)
  10. 六、Linux常用命令——压缩解压缩命令
  11. 蛋白质组学技术与药物作用新靶点研究进展
  12. 程序员微信名昵称_推荐几个高逼格的微信昵称?
  13. WRF users guide Chap5
  14. ASCP300-63B——三相电气防火限流式保护器
  15. 为什么MySQL InnoDB 存储引擎要用B+树做索引,而不用B树?
  16. python元素分类_在python中对列表的元素进行分类
  17. CRM客户关系管理系统让企业在竞争中脱颖而出
  18. 在VUE中使用Lottie动画
  19. scala并发_探索Scala并发
  20. C# 简单的前方交会程序设计

热门文章

  1. 转载,handler
  2. 程序员在互联网公司和行业软件公司工作,有什么区别?
  3. C++数据类型与C#对应关系 c#调用WINDWOS API时,非常有用
  4. Sage CRM升级注意事项二
  5. ACM-ICPC 2018 南京赛区网络预赛 Lpl and Energy-saving Lamps 线段树
  6. 淘宝网的软件质量属性分析
  7. 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn
  8. Code-First Development with Entity Framework 4
  9. POJ 3308 Paratroopers (对数转换+最小点权覆盖)
  10. [转载]url带中文参数显示乱码的问题