2016-12-15 4 views
3

In meiner Python-Standard-Bibliothek (Python 2.7), suche ich nach bestimmten Methoden innerhalb der Module.Suche nach Methode in Python-Standard-Bibliothek

Für z.B. Wenn ich re.py öffne, kann ich sehen, dass es spezifische Methoden wie findall, search usw. gibt. Das gleiche ist offensichtlich, wenn ich dir(re) mache. Ich kann die oben genannten Methoden deutlich sehen.

Ähnlich, wenn ich dir(os) tun, gibt es eine Methode namens system, die ich normalerweise unter Verwendung os.system(cmd_name) aufrufen.

Aber wenn ich diese Methode unter os.py suche, existiert es nicht. Mache ich etwas falsch? Bitte führen Sie

Antwort

5

Diese Funktion ist nicht in der os-Modul definiert, so dass Sie die Definition in os.py nicht finden. Es wird in os von einem anderen Modul importiert; welches Modul das ist, hängt von Ihrem Betriebssystem ab. Sie können überprüfen:

>>> os.system.__module__ 
'nt' 

Hier können Sie sehen, dass ich da bin auf Windows, os.system vom nt Modul kommt.


Sie wahrscheinlich feststellen, dass os.system.__module__ entweder 'nt' oder 'posix' ist, entweder die nt oder posix Modul darstellt. Die Frage ist dann, wo sind diese Module definiert? Es gibt keine nt.py oder posix.py.

Es stellt sich heraus, dass diese Module in C implementiert sind, in . Ja, das Modul nt ist posixmodule.c und das Modul posix. Es ist komisch.

+0

Wie greife ich auf nt Modul zu? Ich möchte den Code für def System sehen – fsociety

+1

@fsociety: Antwort erweitert. – user2357112

+0

gibt es eine Möglichkeit, das posixmodule.c anzuschauen? Verzeihen Sie meine Ignoranz – fsociety