2016-12-15 11 views
3

私のPython標準ライブラリ(Python 2.7)では、モジュール内の特定のメソッドを探しています。Python標準ライブラリのメソッドを探しています

私がre.pyを開いた場合、私はfindall,searchなどのような特定の方法があることがわかります 私はdir(re)を実行すると同じことが明らかです。私は明らかに上記の方法を見ることができます。

同様に、私がdir(os)を実行すると、というメソッドが存在します。これは通常os.system(cmd_name)を使用して呼び出します。

しかし、私がこの方法をos.pyの下に探すと、それは存在しません。何か間違っているのですか?参考にしてください

答えて

5

この機能はosモジュールでは定義されていないため、os.pyで定義されていません。別のモジュールからosにインポートされます。どのモジュールがお使いのオペレーティングシステムに依存するのでしょうか。あなたは確認することができます。

>>> os.system.__module__ 
'nt' 

をここで、私は、Windows上だから、os.systemntモジュールから来ていることがわかります。


あなたはおそらくos.system.__module__はどちらかntまたはposixモジュールを表す、'nt''posix'のいずれかであることがわかります。問題は、それらのモジュールはどこに定義されていますか? nt.pyまたはposix.pyはありません。

これらのモジュールはCで実装されていることがわかります(Modules/posixmodule.c)。はい、ntモジュールはposixmodule.cであり、posixモジュールも同じです。それは奇妙だ。

+0

ntモジュールにアクセスするにはどうすればよいですか?私はdefシステムのコードを見たいと思っています。 – fsociety

+1

@fsociety:回答が拡大しました。 – user2357112

+0

そこにはposixmodule.cを見る方法がありますか?私の無知を認めてください。 – fsociety

関連する問題