我正在浏览Python源代码,发现C implementation为heapq
,还有Python implementation。为什么两者都有?当我从CPython进行import heapq
时使用哪一个?
最佳答案
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
模块的字节编译版本。但是,inside the
heapq.py
file是:# If available, use C implementation
try:
from _heapq import *
except ImportError:
pass
_heapqmodule.c
提供_heapq
模块。因此,如果C实现可用,则import heapq
使用C实现。关于Python heapq-Python和C实现吗?使用哪一个?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29244014/