वे हमेशा एक ही परिणाम देते हैं।
वास्तव में, not 'ham' in 'spam and eggs'
एक "ऑपरेशन" में नहीं बल्कि "ऑपरेशन" में एक एकल "प्रदर्शन करने के लिए विशेष रूप से लापरवाह होना दिखाई देता है और फिर परिणाम का नकारात्मक:
>>> import dis
>>> def notin():
'ham' not in 'spam and eggs'
>>> dis.dis(notin)
2 0 LOAD_CONST 1 ('ham')
3 LOAD_CONST 2 ('spam and eggs')
6 COMPARE_OP 7 (not in)
9 POP_TOP
10 LOAD_CONST 0 (None)
13 RETURN_VALUE
>>> def not_in():
not 'ham' in 'spam and eggs'
>>> dis.dis(not_in)
2 0 LOAD_CONST 1 ('ham')
3 LOAD_CONST 2 ('spam and eggs')
6 COMPARE_OP 7 (not in)
9 POP_TOP
10 LOAD_CONST 0 (None)
13 RETURN_VALUE
>>> def not__in():
not ('ham' in 'spam and eggs')
>>> dis.dis(not__in)
2 0 LOAD_CONST 1 ('ham')
3 LOAD_CONST 2 ('spam and eggs')
6 COMPARE_OP 7 (not in)
9 POP_TOP
10 LOAD_CONST 0 (None)
13 RETURN_VALUE
>>> def noteq():
not 'ham' == 'spam and eggs'
>>> dis.dis(noteq)
2 0 LOAD_CONST 1 ('ham')
3 LOAD_CONST 2 ('spam and eggs')
6 COMPARE_OP 2 (==)
9 UNARY_NOT
10 POP_TOP
11 LOAD_CONST 0 (None)
14 RETURN_VALUE
मैंने पहले सोचा था कि वे हमेशा एक ही परिणाम देते हैं, लेकिन यह not
अपने आप में एक कम पूर्ववर्ती तार्किक नकारात्मक संचालक है, जिसे a in b
किसी अन्य बूलियन अभिव्यक्ति के रूप में आसानी से लागू किया जा सकता है , जबकि not in
सुविधा और स्पष्टता के लिए एक अलग ऑपरेटर था ।
ऊपर की बेचैनी का पता चल रहा था! ऐसा लगता है कि not
स्पष्ट रूप से एक तार्किक निषेध ऑपरेटर है, लेकिन फॉर्म not a in b
विशेष आवरण है, ताकि यह वास्तव में सामान्य ऑपरेटर का उपयोग नहीं कर रहा है। यह not a in b
वस्तुतः एक ही अभिव्यक्ति के a not in b
बजाय एक ही अभिव्यक्ति बनाता है , जिसके परिणामस्वरूप समान मूल्य होता है।
not x in xs
डॉक्स में भी उल्लेख नहीं कर सकता ।