显示有限的接口到外部
当发布python第三方package时, 并不希望代码中所有的函数或者class可以被外部import, 在__init__.py
中添加__all__
属性,
该list中填写可以import的类或者函数名, 可以起到限制的import的作用, 防止外部import其他函数或者类
with语句需要支持上下文管理协议的对象
, 上下文管理协议包含 __enter__ 和 __exit__ 两个方法. with语句建立运行时上下文需要通过这两个方法执行进入和退出
操作.
其中上下文表达式
是跟在with之后的表达式, 该表示大返回一个上下文管理对象
详细原理可以查看这篇文章《》
知道具体原理, 我们可以自定义支持上下文管理协议的类, 类中实现 __enter__ 和 __exit__ 方法
执行结果如下:
证明了会先执行 __enter__ 方法, 然后调用with内的逻辑, 最后执行 __exit__ 做退出处理, 并且, 即使出现异常也能正常退出
相对filter
而言, map和reduce使用的会更频繁一些, filter
正如其名字, 按照某种规则过滤
掉一些元素
当条件满足时, 返回的为等号后面的变量, 否则返回else后语句
使用装饰器实现简单的单例模式
类中两种常用的装饰, 首先区分一下他们
普通成员函数, 其中第一个隐式参数为对象
classmethod装饰器
, 类方法(给人感觉非常类似于OC中的类方法), 其中第一个隐式参数为类
staticmethod装饰器
, 没有任何隐式参数. python中的静态方法类似与C++中的静态方法