2016-07-14 6 views
11

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

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

'math.py'? Что такое 'math.py'? Я не думаю, что Python поставляется с таким файлом. Модуль 'math' реализован в [' Modules/mathmodule.c'] (https://hg.python.org/cpython/file/2.7/Modules/mathmodule.c), файл, который, вероятно, не делает его путь к вашей установке Python. – user2357112

+1

Googling «Python real signature unknown» предполагает, что это своего рода функциональность PyCharm, и PyCharm лжет вам. – user2357112

+0

Точно, pycharm говорит мне, что 'math.py' существует. И его файл со всеми математическими функциями, которые пусты, как «ceil», я задал в своем вопросе. – edgarstack

ответ

11

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

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