# 13.1 Python 模块

所有用纯 Python 编写的模块都位于源代码中的 `Lib` 目录下。一些较大的模块会以文件夹的形式存在，其中可能有子模块的文件夹，例如 `email` 模块。

也有一些简单的模块，比如 `colorsys` 模块，大部分人之前可能都没听说过。它只有几百行 Python 代码，`colorsys` 模块提供了在 RGB 和其他颜色系统之间进行转换的函数。

当你从源代码安装 Python 发行版时，标准库模块会从 `Lib` 文件夹复制到发行版文件夹中。当你启动 Python 时，这个文件夹始终在搜索路径中，因此你可以 `import` 这些模块而不用担心它们的位置。

以导入 `colorsys` 模块为例：

```python
>>> import colorsys
>>> colorsys
<module 'colorsys' from '/usr/shared/lib/python3.7/colorsys.py'>
>>> colorsys.rgb_to_hls(255,0,0)
(0.0, 127.5, -1.007905138339921)
```

你可以在 `Lib/colorsys.py` 中看到 `rgb_to_hls()` 的源代码：

```python
# HLS: Hue, Luminance, Saturation
# H: position in the spectrum
# L: color lightness
# S: color saturation

def rgb_to_hls(r, g, b):
    maxc = max(r, g, b)
    minc = min(r, g, b)
    sumc = (maxc+minc)
    rangec = (maxc-minc)
    l = sumc/2.0
    if minc == maxc:
        return 0.0, l, 0.0
    if l <= 0.5:
        s = rangec / sumc
    else:
        s = rangec / (2.0-sumc)
    rc = (maxc-r) / rangec
    gc = (maxc-g) / rangec
    bc = (maxc-b) / rangec
    if r == maxc:
        h = bc-gc
    elif g == maxc:
        h = 2.0+rc-bc
    else:
        h = 4.0+gc-rc
    h = (h/6.0) % 1.0
    return h, l, s
```

这个函数没有什么特别之处，它只是标准的 Python 函数。你会发现用纯 Python 编写的所有标准库模块都与它类似。这些模块是用纯 Python 编写的，布局美观且易于理解。

你甚至可以在这些标准库代码中发现有待改进之处或者 bug，然后你可以对其更改并贡献给 Python 社区。在本书的最后，我会向你介绍如何给 Python 社区贡献代码。
