Cコード化されたモジュールは、組み込み(欠落__file__
).so
または.pyd
ダイナミックライブラリ(それら__file__
が示す)に存在する可能性があります。これは、気にする必要のない実装の詳細です。
Pythonで呼び出し可能な、Cでコード化された関数がコードを学習することでどのように機能するかを理解したい場合は、Cの読み方を学ぶのが一般的に最適です(実際にCでコード化するよりもはるかに難しいです;-)。ただし、多くの場合、Cコード化された機能の(示唆的で信頼できない)「サンプルPython実装」を見つけ、それらを調べることができます。
通常CでコーディングされるPython標準ライブラリ機能に相当するPythonコーディングの特に有益なリポジトリは、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)
読んで理解するのはかなり簡単です、私は願っています!