2016-07-14 6 views
11

Ich wollte sehen, wie eine math.py Funktion implementiert wurde, aber als ich die Datei öffnete, fand ich, dass alle Funktionen leer sind und es gibt eine einfache pass. Zum Beispiel:Warum einige Python-Build-Funktionen nur bestanden haben?

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 

Ich denke, es liegt daran, dass die Funktionen tatsächlich aus der C-Standard-Bibliothek verwendet werden. Wie funktioniert es ?

+1

'math.py'? Was 'math.py'? Ich glaube nicht, dass Python mit einer solchen Datei kommt. Das 'math'-Modul ist in [' Modules/mathmodule.c'] (https://hg.python.org/cpython/file/2.7/Modules/mathmodule.c) implementiert, eine Datei, die es wahrscheinlich nicht macht Weg in deine Python-Installation. – user2357112

+1

Googeln "Python echte Signatur unbekannt" deutet darauf hin, dass dies eine Art von PyCharm-Funktionalität ist und PyCharm lügt. – user2357112

+0

Genau, pycharm sagt mir, dass 'math.py' existiert. Und es ist eine Datei mit allen mathematischen Funktionen, die leer sind wie die 'ceil', die ich in meine Frage stelle. – edgarstack

Antwort

11

PyCharm belügt Sie. Der Quellcode, den Sie betrachten, ist eine Fälschung, die PyCharm erstellt hat. PyCharm weiß, welche Funktionen vorhanden sein sollen, und kann anhand der Funktion Docstrings deren Signaturen erraten, hat aber keine Vorstellung davon, wie die Funktionskörper aussehen sollen. Wenn Sie den echten Quellcode sehen möchten, können Sie ihn im offiziellen Mercurial-Repository unter Modules/mathmodule.c ansehen. Der C-Quellcode definiert einige Funktionen und Makros zum Erzeugen von Wrappern um die mathematischen Funktionen der C-Standardbibliothek und verwendet dann die Makros, um Pythons math.ceil und andere Funktionen zu definieren.

Verwandte Themen