Почему некоторые встроенные функции Python имеют пропуск?

Я хотел посмотреть, как math.py функция math.py, но когда я открыл файл в PyCharm, я обнаружил, что все функции пустые, и есть простой pass. Например:

def ceil(x): # real signature unknown; restored from __doc__
    """
    ceil(x)

    Return the ceiling of x as a float.
    This is the smallest integral value >= x.
    """
    pass

Я предполагаю, что это потому, что используемые функции на самом деле из стандартной библиотеки C. Как это работает?

Ответ 1

PyCharm лжет вам. Исходный код, который вы ищете, - это подделка, созданная PyCharm. PyCharm знает, какие функции должны быть там, и он может догадываться о своих подписях, используя функции docstrings, но не знает, как выглядят тела функций.

Если вы хотите увидеть настоящий исходный код, вы можете посмотреть его в официальном репозитории Mercurial в Modules/mathmodule.c. Исходный код C определяет несколько функций и макросов для создания оболочек вокруг математических функций библиотеки C, а затем использует макросы для определения math.ceil Python и других функций.