दो रूपों समान बाईटकोड बनाने के लिए, के रूप में आप स्पष्ट रूप से सत्यापित कर सकते हैं:
>>> import dis
>>> dis.dis(compile('if x not in d: pass', '', 'exec'))
1 0 LOAD_NAME 0 (x)
3 LOAD_NAME 1 (d)
6 COMPARE_OP 7 (not in)
9 JUMP_IF_FALSE 4 (to 16)
12 POP_TOP
13 JUMP_FORWARD 1 (to 17)
>> 16 POP_TOP
>> 17 LOAD_CONST 0 (None)
20 RETURN_VALUE
>>> dis.dis(compile('if not x in d: pass', '', 'exec'))
1 0 LOAD_NAME 0 (x)
3 LOAD_NAME 1 (d)
6 COMPARE_OP 7 (not in)
9 JUMP_IF_FALSE 4 (to 16)
12 POP_TOP
13 JUMP_FORWARD 1 (to 17)
>> 16 POP_TOP
>> 17 LOAD_CONST 0 (None)
20 RETURN_VALUE
इतनी स्पष्ट रूप से वे शब्दार्थतः पहचान कर रहे हैं।
शैली के मामले में, PEP 8 इस मुद्दे का उल्लेख नहीं करता है। यह तुरंत स्पष्ट है कि not in
एक भी ऑपरेटर, और "अंग्रेजी की तरह लिखा है" है कि बनाता है -
व्यक्तिगत रूप से, मैं दृढ़ता से if x not in y
रूप पसंद करते हैं। if not x in y
कुछ पाठकों को सोचने में गुमराह कर सकता है इसका मतलब है if (not x) in y
, अंग्रेजी की तरह थोड़ा कम पढ़ता है, और इसमें बिल्कुल कोई क्षतिपूर्ति फायदे नहीं हैं।
स्रोत
2010-08-14 01:57:19
एक पुराने प्रश्न को एक नए के डुप्लिकेट के रूप में बंद करना पूरी तरह से स्वीकार्य है। Http: //meta.stackoverflow देखें।कॉम/क्यू/255410, http://meta.stackexchange.com/a/147651 – ThisSuitIsBlackNot