共计 1399 个字符,预计需要花费 4 分钟才能阅读完成。
0x01 源码浏览
目录构造
python3.6/site-packages/_pytest/
├── _argcomplete.py
├── assertion
│ ├── __init__.py
│ ├── pycache
│ ├── rewrite.py
│ ├── truncate.py
│ └── util.py
├── cacheprovider.py
├── capture.py
├── _code
│ ├── __init__.py
│ ├── pycache
│ ├── code.py 格局解析与异样解决
│ └── source.py 保留源码片段格局
├── compat.py
├── config
│ ├── argparsing.py
│ ├── exceptions.py
│ ├── findpaths.py
│ ├── __init__.py
│ └── pycache
├── debugging.py
├── deprecated.py
├── doctest.py
├── faulthandler.py
├── fixtures.py
├── freeze_support.py
├── helpconfig.py
├── hookspec.py
├── __init__.py
├── _io
│ ├── __init__.py
│ ├── pycache
│ ├── saferepr.py
│ ├── terminalwriter.py
│ └── wcwidth.py
├── junitxml.py
├── logging.py
├── main.py
├── mark
│ ├── expression.py
│ ├── __init__.py
│ ├── pycache
│ └── structures.py
├── monkeypatch.py
├── nodes.py
├── nose.py
├── outcomes.py
├── pastebin.py
├── pathlib.py
├── pycache
├── pytester_assertions.py
├── pytester.py
├── python_api.py
├── python.py
├── py.typed
├── recwarn.py
├── reports.py
├── runner.py
├── setuponly.py
├── setupplan.py
├── skipping.py
├── stepwise.py
├── store.py
├── terminal.py
├── threadexception.py
├── timing.py
├── tmpdir.py
├── unittest.py
├── unraisableexception.py
├── _version.py
├── warnings.py
└── warning_types.py
准备常识
__pycache__
目录python 程序运行时,并不需要编译成二进制代码,而间接从源码运行程序。简略来说,python 解释器将源码转换为字节码,而后由解释器来执行这些字节码。
在第一次执行代码的时候,python 解释器曾经将编译的字节码放在__pycache__文件中,这样当前再次运行的话,如果被调用的模块未产生扭转,就间接跳过编译这步,间接去__pycache__文件夹中去运行相干.pyc 文件,大大缩短我的项目运行前的筹备工夫。__init__.py
文件当 python 检测到目录下存在一个__init__.py 时,python 会将其当成一个模块。咱们导入一个包时,实际上导入了它的__init__.py 文件