题
这是如何进口的工作,什么文件没用?
import _functools
在python2.5:
import _functools
print _functools.__file__
给:
Traceback (most recent call last):
File "D:\zjm_code\mysite\zjmbooks\a.py", line 5, in <module>
print _functools.__file__
AttributeError: 'module' object has no attribute '__file__'
我怎么能得到含义的部分(从_functools进口的部分)如果我不能读C码?
解决方案
C编码模块可以建立在(缺乏 __file__
)或生活在一个 .so
或 .pyd
动态图书馆(其中他们 __file__
将指示)--这是一个实施细节应该不关心。
如果你想了解如何蟒蛇可调用,C编码功能的工作通过研究码,学习 阅读 C一般最佳(远较难于实际有效 编码 在C;-).然而,往往会发现(提示性的,不具权威性的)"样品Python实现"的C-编码的功能,并可以研究 那些.
一个特别富有成效的储存库的蟒蛇的编码等同于Python标准图书馆功能的正常编码在C是的 pypy 项目(其中不Python实现编码Python)--其来源的可浏览的 在这里, 当然,你可以下载并且仔细阅读他们在你的机器。
特别是,这是pypy的 _functools.py 执行:
""" Supplies the internal functions for functools.py in the standard library """
class partial:
"""
partial(func, *args, **keywords) - new function with partial application
of the given arguments and keywords.
"""
__slots__ = ['func', 'args', 'keywords']
def __init__(self, func, *args, **keywords):
if not callable(func):
raise TypeError("the first argument must be callable")
self.func = func
self.args = args
self.keywords = keywords
def __call__(self, *fargs, **fkeywords):
newkeywords = self.keywords.copy()
newkeywords.update(fkeywords)
return self.func(*(self.args + fargs), **newkeywords)
很容易阅读并理解,我希望!
其他提示
请提问的时候下一次更加清晰。我想,你希望这个
>>> import _functools
>>> _functools.__file__
'/usr/lib/python2.6/lib-dynload/_functools.so'
据的共享对象_functools.so
,写在C.我想,它是由实际functools
模块导入。为什么你想从它导入?当然,这是可能的,但是,你可以一样好from functools import partial
。
为Python2.6个,
的 _functools
模块是一个内置的.你可以看到,如果简单的类型 import _functools ; repr(_functools)
打进你的口译员的提示。
如果你想看到的C源模块的检查 http://hg.python.org/cpython/file/d7e85ddb1336/Modules/_functoolsmodule.c
此 _functools
模块没有 __file__
属性(参见下段),因为它的编译成的解释。
为Python2.5,
的 _functools
模块是一个标准图书馆模块的实施,在C和提供 http://hg.python.org/cpython/file/a78381ead4cf/Modules/_functoolsmodule.c 如果你想要看到它。你可以看到的位置模块被装上通过打字 import _functools ; print _functools.__file__
在你的解释提示