जब तक मैं पागल नहीं हूं if None not in x
और if not None in x
समकक्ष हैं। क्या कोई पसंदीदा संस्करण है? मुझे लगता है कि None not in
अधिक अंग्रेजी-वाई है और इसलिए अधिक पायथनिक है, लेकिन not None in
अन्य भाषा वाक्यविन्यास की तरह है। क्या कोई पसंदीदा संस्करण है?"कोई भी नहीं" बनाम "कोई नहीं"
उत्तर
वे एक ही बाइटकोड को संकलित करते हैं, इसलिए हाँ वे बराबर हैं।
>>> import dis
>>> dis.dis(lambda: None not in x)
1 0 LOAD_CONST 0 (None)
3 LOAD_GLOBAL 1 (x)
6 COMPARE_OP 7 (not in)
9 RETURN_VALUE
>>> dis.dis(lambda: not None in x)
1 0 LOAD_CONST 0 (None)
3 LOAD_GLOBAL 1 (x)
6 COMPARE_OP 7 (not in)
9 RETURN_VALUE
documentation भी यह स्पष्ट करता है कि दो बराबर हैं:
x not in s
x in s
का निषेध देता है।
जैसा कि आप उल्लेख करते हैं None not in x
अधिक प्राकृतिक अंग्रेजी है इसलिए मैं इसका उपयोग करना पसंद करता हूं।
यदि आप not y in x
लिखते हैं तो यह अस्पष्ट हो सकता है कि आपका मतलब not (y in x)
या (not y) in x
था। यदि आप not in
का उपयोग करते हैं तो कोई अस्पष्टता नहीं है।
धन्यवाद, आपको पता नहीं था कि आप बाइटकोड की तुलना कर सकते हैं इस। उल्लेख करने के लिए –
अभिव्यक्ति
not (None in x)
(कोष्ठक स्पष्टता के लिए जोड़ा) एक साधारण बूलियन निषेध है। हालांकि,
None not in x
विशेष सिंटेक्स अधिक पठनीय कोड के लिए जोड़ा जाता है (कोई संभावना में के सामने यहाँ वहाँ है, और न ही यह कोई मतलब है, उपयोग करने के लिए और, या, आदि)। यदि यह विशेष मामला जोड़ा गया था, तो इसका इस्तेमाल करें।
ही
कोfoo is not None
बनाम
not foo is None
मुझे लगता है बहुत स्पष्ट पढ़ने के लिए "नहीं है" लागू होता है। एक अतिरिक्त बोनस के रूप में, यदि अभिव्यक्ति एक बड़ी बूलियन अभिव्यक्ति का हिस्सा है, तो नहीं का दायरा तुरंत स्पष्ट होता है।
+1 – Falmarri
यह भी देखें http://stackoverflow.com/questions/2710940 – Gumbo
यदि आप केवल 1 ऑपरेटर को दूसरे ऑपरेटर में बदलते हैं, तो SO पर बहुत सारे प्रश्न डुप्लिकेट होंगे – Falmarri