我正在浏览Python源代码,并注意到heapq
的{{3}}以及C implementation。为什么两者兼而有之?当我从CPython import heapq
时使用哪一个?
答案 0 :(得分:6)
import heapq
导入Python实现。您可以通过检查交互式解释器中heapq
的值来确认:
In [20]: import heapq
In [21]: heapq
Out[21]: <module 'heapq' from '/usr/lib/python2.7/heapq.pyc'>
heapq.pyc
是heapq.py
模块的字节编译版本。
# If available, use C implementation
try:
from _heapq import *
except ImportError:
pass
_heapqmodule.c
提供了_heapq
模块。因此,如果C实现可用,import heapq
将使用C实现。