TAG : **PYTHON**
STATE : **UNFINISHED**
1. getpass
getpass模块提供了平台无关的在命令行下输入密码的方法
import getpass
usr = getpass.getuser('Enter username:')
pwd = getpass.getpass('Enter the passwrod:')
2. collections UNFINISH
colections包含了一些特殊的容器,针对Python内置的容器,例如list、dict、set和tuple,提供了另一种选择
- namedtuple,可以创建包含名称的tuple
- deque,类似于list的容器,可以快速的在队列头部和尾部添加、删除元素
- Counter,dict的子类,计算可hash的对象
- OrderedDict,dict的子类,可以记住元素的添加顺序
- defaultdict,dict的子类,可以调用提供默认值的函数
3. contextlib
Pyhton内置的上下文管理器工具模块,通过生成器实现,我们无需创建类以及enter和exit这两个方法。 ```python from contextlib import contextmanager
@contextmanager def make_open_context(filename, mode): fp = open(filename, mode) try: yield fp finally: fp.close()
with make_open_context(‘/tmp/a.txt’, ‘a’) as file_obj: file_obj.write(“hello”)
<a name="xu0Ni"></a>
# 4. inspect `UNFINISH`
inspect模块主要提供了四种用处:
1. 对是否是模块、框架、函数进行类型检查
1. 获取源码
1. 获取类或者函数的参数信息
1. 解析堆栈
<a name="lBxlB"></a>
# 5. @abstractmodel
抽象方法是父类的一个方法,父类没有实现这个方法,父类是不可以实例化的。<br />子类必须实现父类定义的抽象方法, 子类才可以被实例化。
Python中的**abc**提供了**@abstractmethod**装饰器实现抽象方法的定义。
```python
from abc import ABC, abstractmethod
class Foo(ABC):
@abstractmethod
def fun(self):
"""
你需要在子类中实现该方法, 子类才允许被实例化
"""
class SubFoo(Foo):
def fun(self):
print("子类实现父类的抽象方法")
if __name__ == "__main__":
sf = SubFoo()
sf.fun()