C-кодированные модули могут быть встроенными (без __file__
) или размещаться в динамической библиотеке .so
или .pyd
(которую будет указывать их __file__
) - это деталь реализации, которую вы не должны заботиться о.
Если вы хотите понять, как Python-вызываемая, C-кодированная функция работает, изучая код, лучше научиться читать C (гораздо менее сложный, чем на самом деле продуктивно кодирование в C ;-). Тем не менее, часто вы найдете (наводящие на размышления, не авторитетные) «примеры реализаций Python» с функциональностью на C-коде, и вы можете изучить эти .
Особенно плодотворным хранилищем кодированных Python эквивалентов функциональности стандартной библиотеки 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)
Довольно тривиально читать и понимать, надеюсь!