2016-01-16 8 views
7

मैं चेकियो में एक प्रश्न के माध्यम से जा रहा था। और फिर मैं इस पर आया।पायथन में मॉड्यूल की तुलना करना। ठीक है, लेकिन क्यों?

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

कोई बता सकता है कि पाइथन किसी भी दो चीजों के बीच तुलना करता है।

क्या पाइथन मॉड्यूल के लिए पदानुक्रम प्रदान करके यह काम करता है। इसके अलावा,

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)) 

मेरे मामले में:

39785048 40578360 
False 
False 
True 
True 
39785048 40578360 

आपका लाभ में भिन्नता है, क्योंकि आपके आईडी मेरा और इसलिए तुलना अपने मामले में उलट हो सकता है नहीं होगा सकता है।

+0

वास्तव में, यदि मैं सत्र को पुनरारंभ करता हूं (ताकि आयात फिर से प्रभाव डालेगा), आईडी अलग-अलग होंगे। – Reti43

+0

कोई आश्चर्य नहीं है। मॉड्यूल के लिए नई मेमोरी पोजिशनिंग। आप इसे पुनरारंभ किए बिना कर सकते हैं। मॉड्यूल हटाएं और इसे 'sys.modules' से हटा दें और इसे पुनः आयात करें। ज्यादातर मामलों में 'आईडी' भी बदल जाएगा। आप हटाने और पुनः आयात के बीच 'a = 5' जैसे कुछ भी कर सकते हैं। – mementum

संबंधित मुद्दे