Warum haben einige integrierte Python-Funktionen nur Pass?

Lesezeit: 2 Minuten

Warum haben einige integrierte Python Funktionen nur Pass
edgarstack

Ich wollte sehen, wie a math.py Funktion wurde implementiert, aber als ich die Datei in PyCharm öffnete, stellte ich fest, dass alle Funktionen leer sind und es ein einfaches gibt pass. Beispielsweise:

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 verwendeten Funktionen tatsächlich aus der C-Standardbibliothek stammen. Wie funktioniert es?

  • math.py? Was math.py? Ich glaube nicht, dass Python eine solche Datei mitbringt. Der math Modul ist implementiert in Modules/mathmodule.c, eine Datei, die wahrscheinlich nicht in Ihre Python-Installation aufgenommen wird.

    – user2357112 unterstützt Monica

    14. Juli ’16 um 21:06

  • Wenn Sie “Python echte Signatur unbekannt” googeln, deutet dies darauf hin, dass dies eine Art PyCharm-Funktionalität ist und PyCharm Sie anlügt.

    – user2357112 unterstützt Monica

    14. Juli ’16 um 21:09

  • Genau, pycharm sagt mir das math.py existiert. Und es ist eine Datei mit allen mathematischen Funktionen, die leer sind wie die ceil Ich habe meine Frage gestellt.

    – edgarstack

    14. Juli ’16 um 21:11

  • Verwandte: Finden Sie den Quellcode für integrierte Python-Funktionen?

    – Stevoisiak

    14. März ’18 um 20:05

1642079532 718 Warum haben einige integrierte Python Funktionen nur Pass
user2357112 unterstützt Monica

PyCharm belügt Sie. Der Quellcode, den Sie sich ansehen, ist eine Fälschung, die PyCharm erstellt hat. PyCharm weiß, welche Funktionen vorhanden sein sollten, und kann ihre Signaturen mithilfe der Funktions-Docstrings erraten, hat jedoch keine Ahnung, wie die Funktionskörper aussehen sollten.

Wenn Sie den echten Quellcode sehen möchten, können Sie ihn sich im offiziellen Github-Repository in . ansehen Modules/mathmodule.c. Viele der darin enthaltenen Funktionen sind von Makros generierte dünne Wrapper um C-Funktionen von math.h, aber es gibt auch eine Menge manuell geschriebenen Codes, um Dinge wie inkonsistente oder unzureichende Standardbibliotheksimplementierungen zu handhaben, Funktionen ohne math.h Äquivalent und Anpassungshaken wie __ceil__.

  • Sie können gefälschte Quelldateien anhand des Dateipfads in der Titelleiste identifizieren. Real: PythonPython<version>Lib. Gefälscht: PyCharm<version>systempython_stubs

    – Stevoisiak

    14. März ’18 um 19:53


  • Da wir sie verwenden könnten, indem wir sie ausführen (z. B. die Ceil-Funktion), warum können wir die Quelle nicht in unserer lokalen Umgebung finden? Liegt es daran, dass es sich bereits um ein Binärformat handelt (wenn dies der Fall ist, wo finde ich diese Binärdatei)?

    – Luk Aron

    14. Dezember ’20 um 22:30

  • @LukAron: Unter Windows math wird direkt in die ausführbare Python-Datei kompiliert. Auf anderen Plattformen können Sie überprüfen math.__file__ um die zu finden .so Datei.

    – user2357112 unterstützt Monica

    15. Dezember ’20 um 2:21

  • @ user2357112supportsMonica vielen Dank für die Antwort, gibt es in Windows eine Möglichkeit, herauszufinden, wo sich diese ausführbare Datei befindet?

    – Luk Aron

    22. Dezember ’20 um 3:07

  • aber warum lügt pycharm? 🤔.

    – T.M15

    7. März ’21 um 10:53

.

486570cookie-checkWarum haben einige integrierte Python-Funktionen nur Pass?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy