python - Comparing membership of a list with True operator -


मान लें कि हमारे पास

  a = [1, 2]  <  

   

कोड> सच सच है

लेकिन नीचे दिए गए कोड मुझे या किसी भी अजगर-विशेषज्ञ मित्रों को समझ में नहीं आता है

  ई में एक == सही   

प्रिंट

  झूठी झूठी   

क्या कोई यह समझा सकता है?

यदि हम भ्रामक अभिव्यक्ति नीचे उबाल लें, तो यह है:

  1 में = = सत्य   

यह झूठा देता है (हम उम्मीद करते हैं कि true ) तो इसका इस्तेमाल करने के लिए हम ast मॉड्यूल का उपयोग करते हैं:

 > gt; & gt; आयात ऐस्ट एंड जी; & gt; & gt; प्रिंट ast.dump ( 'एक == में 1 यह सच है' ast.parse ()) मॉड्यूल (शरीर = [Expr (मूल्य = तुलना करें (बाएं = अंक (n = 1), ऑप्स = [में (), समीकरण ()] तुलना करें = [नाम (आईडी = 'ए', सीटीएक्स = लोड), नाम (आईडी = 'ट्रू', सीटीएक्स = लोड ())]))))   

तुलना करें जोड़े कोष्ठक के साथ एक संस्करण के साथ जो आप जिस तरह से संभवतः काम करता है काम करता है:

  & gt; & gt; & gt; प्रिंट ast.dump (ast.parse ('(1 में) == सच')) मॉड्यूल (शरीर = [एक्सप्र। (मूल्य = तुलना करें (बाएं = तुलना करें (बाएं = संख्या (एन = 1), ops = [( )], तुलनाकारक = [नाम (id = 'एक', ctx = लोड ())]), ऑप्स = [Eq ()], तुलनाकारक = [नाम (id = 'यह सच है', ctx = लोड ())]) )])   

क्या आप अंतर देखते हैं? दूसरा एक Eq (In (1, a), True) जैसा है जैसा हम उम्मीद करते हैं लेकिन पहले में (1, ए) ईक (ए, ट्रू) है। क्या? ये दोनों बातें एक साथ कैसे जाते हैं? ठीक है, वे एक संयोजन के रूप में बनाते हैं, जैसे और

तो यह समाप्त होता है कि पहली अभिव्यक्ति 1 के बराबर है और एक == सही

लेकिन क्यों?

ऐसा इसलिए है क्योंकि अजगर "जंजीर स्थित सशर्त" का समर्थन करता है, जैसे:

  1 & lt; 3 & lt; 5   

आपका उदाहरण सिर्फ संपार्श्विक क्षति है: जाहिरा तौर पर केवल और चेन जैसा कंडीशनल नहीं हैं, लेकिन में भी गिना जाता है यह मेरे लिए सहज नहीं है, लेकिन यह कैसे काम करता है। आप यहां चेनिंग के बारे में और पढ़ सकते हैं:

Comments

Popular posts from this blog

php - PDO bindParam() fatal error -

php - How can I cram 6+31 numeric characters into 22 alphanumeric characters? -

mysql - where clause in inner join query -