初始化说 __init__.py

背景理论

1. __init__.py用来标识所在目录是一个python的模块包(module package)

实际上,如果目录包含__init__.py文件,当导入该目录时,会执行__init__.py里面的代码

request
   |__init__.py  --> print('I from the __init__.py of request.')
   |api.py --> def view(): pass

工作目录request所在目录,进入交互模式 import

>>> import request
I from the __init__.py of request.

2. __init__.py用来控制模块的导入,对外提供功能

  • 有时项目目录比较深,可在__init__.py中导入,使用者直接从package顶层即可导入使用

  • 控制模块导入,当import request注意时request所在目录为工作目录

# __init__.py 导入其他功能时,注意工作目录
from request.api import view

print('I from the __init__.py of request.')

源码分析

  • warnings 用于提示用户一些错误或过时的用法,后续代码依然执行

  • chardet 对未知bytes的编码进行猜测,然后转换为str

  • urllib是Python官方连接的标准库

  • urllib3是第三方库,提供了原生urllib没有的特性,如连接池

  • requests库其实是对urllib3的再次封装,使用更加友好

  • check_compatibility和_check_cryptography实现思想可参考异常结构exceptions.py

项目结构

Last updated