2016-01-16 1 views
7

私はCheckioの質問をしていました。そして、私はこれを見つけました。Pythonでのモジュールの比較。いいけどなんで?

import re,math 
re > math # returns True 
math > re # returns False 

Pythonがどのように2つのものを比較しているか説明できますか?

pythonはモジュールの階層を提供することでこれを行いますか?さらに、

re > 1 # return True # Ok, But Why? 

私は本当にこれらのことについて深い説明をいただきたいと思います!

答えて

4

すべてがオブジェクトです。モジュールも例外ではありません。したがって:私の場合は

import re, math 

print(id(re), id(math)) 
print(re > math) 
print(id(re) > id(math)) 
print(re < math) 
print(id(re) < id(math)) 
print(id(re), id(math)) 

:あなたのIDは鉱山ので、比較はあなたのケースでは逆にすることができるではありませんので、

39785048 40578360 
False 
False 
True 
True 
39785048 40578360 

あなたの走行距離は異なる場合があります。

+0

実際、セッションを再開すると(インポートに再び影響が出るように)、IDは異なります。 – Reti43

+0

そこには驚きはありません。モジュールの新しいメモリ配置。あなたは再起動せずにそれを行うことができます。モジュールを削除し、それを 'sys.modules'から削除し、それを再度インポートします。 'id'はほとんどの場合変更されます。削除と再インポートの間に 'a = 5 'のようなことをすることもできます。 – mementum