पायथन इन दोनों (दूसरों के बीच) निर्मित वस्तुओं में है। वे सिर्फ वस्तुएं हैं; शुरुआत में, उनके पास अभी तक कोई नाम नहीं है, लेकिन यह जानने के लिए कि हम क्या देखते हैं, चलो उन्हें 0x600D
और 0xBAD
पर कॉल करें।
एक अजगर (2.x) स्क्रिप्ट निष्पादित करने के लिए शुरू करने से पहले, नाम True
वस्तु 0x600D
करने के लिए बाध्य हो जाता है, और नाम False
वस्तु 0xBAD
करने के लिए बाध्य हो जाता है, इसलिए जब कार्यक्रम True
को संदर्भित करता है, यह 0x600D
पर लग रहा है ।
क्योंकि 0x600D
और 0xBAD
जानते हैं कि वे आम तौर पर नाम True
और False
द्वारा किया जाता है, कि क्या वे उत्पादन जब वे मुद्रित करने के है, अर्थात 0x600D
रिटर्न 'True'
और इतने पर की __str__
विधि।
True = False
अब True
नाम को एक अलग वस्तु से बांधता है। अब से, दोनों नाम True
और False
उसी ऑब्जेक्ट को संदर्भित करते हैं 0xBAD
, जो मुद्रित होने पर False
आउटपुट करता है।
True = True
वास्तव में कुछ भी नहीं है: यह ऑब्जेक्ट नाम True
से जाना जाता है और इस वस्तु के लिए नए (और पुराने) नाम True
बांधता है। चूंकि (पिछले चरण की वजह से) True
इस से पहले 0xBAD
को संदर्भित करता है, इसके बाद भी यह 0xBAD
को संदर्भित करता है। इसलिए, प्रिंटिंग अभी भी False
आउटपुट करता है।
True = not True
पहले उद्देश्य यह है कि नाम True
के लिए बाध्य है, जो 0xBAD
है लेता है। यह इस ऑब्जेक्ट को not
ऑपरेटर को देता है। not
0xBAD
को संदर्भित करने के लिए यहां किस नाम का उपयोग नहीं किया जाता है (या पता है), यह केवल जानता है कि 0xBAD
दिए जाने पर इसे 0x600D
वापस करना चाहिए।यह वापसी मान तब असाइनमेंट ऑपरेटर =
को दिया जाता है, इस ऑब्जेक्ट पर True
नाम बाध्यकारी।
नाम True
नाम से अब एक बार 0x600D
ऑब्जेक्ट को संदर्भित करता है, print True
True
आउटपुट को कॉल करता है, और दुनिया फिर से अच्छी है।
कि अच्छे पुराने मजाक '#define सच FALSE' नहीं है यहां कार्रवाई में? – Amarghosh
संस्करण 3 में अभिसरण सही = गलत एक सिंटैक्स त्रुटि उठाता है, इसलिए मुझे लगता है कि आपका प्रश्न संस्करण 2 – jab
को संदर्भित करता है इसके बारे में क्या अजीब बात है? विस्तृत करने के लिए परवाह? – ghostdog74