2016-07-14 20 views
11

math.py 함수가 구현 된 방법을보고 싶었지만 파일을 열었을 때 모든 함수가 비어 있고 간단한 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

'math.py'? 'math.py'는 무엇입니까? 나는 파이썬이 그러한 파일을 가지고 있다고 생각하지 않는다. 'math' 모듈은 [Modules/mathmodule.c'] (https://hg.python.org/cpython/file/2.7/Modules/mathmodule.c)에 구현되어 있습니다. 파이썬 설치에 – user2357112

+1

인터넷 검색 "Python의 실제 서명을 알 수 없음"은 이것이 일종의 PyCharm 기능이며 PyCharm이 거짓말하고 있음을 암시합니다. – user2357112

+0

정확하게, pycharm은'math.py'가 있다는 것을 알려줍니다. 그리고 그 질문은'ceil'처럼 비어있는 모든 수학 함수를 가진 파일입니다. – edgarstack

답변

11

PyCharm이 (가) 거짓말을합니다. 당신이보고있는 소스 코드는 PyCharm이 만든 가짜입니다. PyCharm은 어떤 함수가 있어야 하는지를 안다. 그리고 docstrings 함수를 사용하여 서명을 추측 할 수는 있지만, 함수 본문이 어떤 모습인지는 알 수 없다.

실제 소스 코드를 보려면 공식 Mercurial 저장소 Modules/mathmodule.c에서 확인하십시오. C 소스 코드는 C 표준 라이브러리 수학 함수를 둘러싼 래퍼를 생성하기위한 몇 가지 함수와 매크로를 정의한 다음 매크로를 사용하여 Python의 math.ceil 및 기타 함수를 정의합니다.