Warum haben einige integrierte Python-Funktionen nur Pass?
Lesezeit: 2 Minuten
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
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
.
4865700cookie-checkWarum haben einige integrierte Python-Funktionen nur Pass?yes
math.py
? Wasmath.py
? Ich glaube nicht, dass Python eine solche Datei mitbringt. Dermath
Modul ist implementiert inModules/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 dieceil
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