Python heapq - Python和C实现?使用哪一个?

Gar*_*eth 6 python

我浏览Python源,发现一个C实现heapq,以及一个Python实现.为什么两者兼而有之?我import heapq来自CPython 时使用哪一个?

unu*_*tbu 6

import heapq导入Python实现.您可以通过检查heapq交互式解释器中的值来确认:

In [20]: import heapq

In [21]: heapq
Out[21]: <module 'heapq' from '/usr/lib/python2.7/heapq.pyc'>
Run Code Online (Sandbox Code Playgroud)

heapq.pycheapq.py模块的字节编译版本.

但是,文件内部heapq.py是:

# If available, use C implementation
try:
    from _heapq import *
except ImportError:
    pass
Run Code Online (Sandbox Code Playgroud)

_heapqmodule.c提供_heapq模块.因此,如果C实现可用,则import heapq使用C实现.