TAG : **PYTHON**
STATE : **UNFINISHED**

1. getpass

getpass模块提供了平台无关的在命令行下输入密码的方法

  1. import getpass
  2. usr = getpass.getuser('Enter username:')
  3. 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内置的上下文管理器工具模块,通过生成器实现,我们无需创建类以及enterexit这两个方法。 ```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”)

  1. <a name="xu0Ni"></a>
  2. # 4. inspect `UNFINISH`
  3. inspect模块主要提供了四种用处:
  4. 1. 对是否是模块、框架、函数进行类型检查
  5. 1. 获取源码
  6. 1. 获取类或者函数的参数信息
  7. 1. 解析堆栈
  8. <a name="lBxlB"></a>
  9. # 5. @abstractmodel
  10. 抽象方法是父类的一个方法,父类没有实现这个方法,父类是不可以实例化的。<br />子类必须实现父类定义的抽象方法, 子类才可以被实例化。
  11. Python中的**abc**提供了**@abstractmethod**装饰器实现抽象方法的定义。
  12. ```python
  13. from abc import ABC, abstractmethod
  14. class Foo(ABC):
  15. @abstractmethod
  16. def fun(self):
  17. """
  18. 你需要在子类中实现该方法, 子类才允许被实例化
  19. """
  20. class SubFoo(Foo):
  21. def fun(self):
  22. print("子类实现父类的抽象方法")
  23. if __name__ == "__main__":
  24. sf = SubFoo()
  25. sf.fun()

6. functools

7. typing

  1. 类型检查,防止运行时出现参数和返回值类型不符合。
  2. 作为开发文档附加说明,方便使用者调用时传入和返回参数类型。
  3. 该模块加入后并不会影响程序的运行,不会报正式的错误,只有提醒。

    8. getitem

    如果类中定义了 getitem()方法,那么他的实例对象(假设为a)就可以使用a[key]进行取值,即:
    当实例对象做a[key]运算时,就会调用类中的__getitem__()方法。