首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >_functools模块

_functools模块
EN

Stack Overflow用户
提问于 2010-01-09 15:13:23
回答 5查看 2.1K关注 0票数 4

这个导入是如何工作的,它使用的是什么文件?

代码语言:javascript
复制
import _functools

在python 2.5中:

代码语言:javascript
复制
import _functools
print _functools.__file__

提供:

代码语言:javascript
复制
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__'

如果我不能读懂C代码,我如何获得partial (从_functools导入partial)的含义?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-01-10 00:38:59

C代码的模块可以是内置的(缺少__file__),也可以放在.so.pyd动态库中(它们的__file__会指出这一点) --这是您不应该关心的实现细节。

如果您想通过研究代码来理解Python可调用的C编码函数是如何工作的,那么学习C通常是最好的(远没有用C实际高效地编码那么难)。但是,您经常会发现(提示性的、非权威的)C编码功能的“示例Python实现”,您可以研究这些实现。

pypy项目(它用Python语言实现Python实现)是一个特别有用的存储库,它的源代码是可浏览的here,当然,您也可以在您的机器上下载和阅读它们。

具体来说,这是pypy的_functools.py实现:

代码语言:javascript
复制
""" 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)

我希望读起来和理解起来都很简单!

票数 3
EN

Stack Overflow用户

发布于 2010-01-09 15:18:20

下次提问时,请讲得更清楚。我猜你想要这个

代码语言:javascript
复制
>>> import _functools
>>> _functools.__file__
'/usr/lib/python2.6/lib-dynload/_functools.so'
票数 0
EN

Stack Overflow用户

发布于 2010-01-09 15:19:02

它是一个用C编写的共享对象_functools.so,我猜它是由实际的functools模块导入的。为什么要尝试从它导入?当然,这是可能的,但是,你也可以使用from functools import partial

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2032677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档