那些值得称赞的 python 小亮点,断言,with 语句,格式化字符串,听我道来
断言
python 断言具备调试与检验的功能,它用于判断某些条件,当断言条件为 True 时,程序正常运行;当断言条件为 False 时,引发 AssertionError
异常。
例如在游戏里面设置一个未满 18 岁禁止访问的功能。
但是这个案例并不是一个完美的案例,因为断言是为了告知 开发人员 ,你写的程序发生异常了。如果一个潜在错误在程序编写前就能考虑到,例如程序运行时网络中断,这个场景就不需要使用断言。
断言主要为调试辅助而生,为的是程序自检,并不是为了处理错误,程序 BUG 还是要依赖 try... except 解决。
由于断言是给 开发人员看的,所以下述案例的断言是有效的。
使用断言要注意: 不要用断言验证用户的输入,这是因为 python 通过命令行运行时,如果增加 -O
标识,断言就被全局禁止了,你的所有验证就都丢失了。
with 语句与上下文管理器
with
语句是一个非常有用的 python 特性,它可以大幅的减少代码行数,除此之外还能有效的避免程序 BUG。
不使用 with
语句操作一个文件的代码如下:
使用了 with
语句之后,代码修改为:
与之对比的还有 threading
模块中的 Lock
对象。
自己实现上下文管理器with
语句可作用于,任意一个具备 上下文管理器 的类或者函数,所生成的对象,只需要在类的内部实现 __enter__
和 __exit__
函数即可。
例如手动写一个属于自己的文件操作类。
当程序执行到 with
语句上下文时,首先调用的是 __enter__
函数,完成资源初始化 ,当 with
语句执行完毕时,调用 __exit__
,完成资源释放。
编写一个测试代码运行时间的上下文管理器主要通过封装 time
模块下相关方法实现,代码进入 with
语句时,调用 __enter__
获取资源,离开时,调用 __exit__
释放资源。
4 种格式化字符串浅析
通过 % 格式化字符串在学习 python 时,很多地方都会提及 %
格式化字符串,这是由于 python 继承了 C 语言的部分写法,因此出现该种操作。
该写法随着时间的发展,可以慢慢被遗忘掉了。
通过 字符串.format 方法格式化字符串format
方法在 python3 引入,该方法较于之前的 %
写法,多了一种位置格式化操作。
通过 f-strings (格式化字符串字面值)从 python3.6 开始,又增加了一种格式化字符串的方法,通过在字符串前面添加特殊标识 f
,实现在字符中嵌入任意表达式。
通过 模板字符串实现格式化该用法不太常用,导入 string
模块的 Template
类进行实现。
如何选择字符串格式化的方法,遵循一个原则即可,安全用 Template,其余用新的
版权声明: 本文为 InfoQ 作者【梦想橡皮擦】的原创文章。
原文链接:【http://xie.infoq.cn/article/867b0f9c06fca36e2e32bad72】。文章转载请联系作者。
评论