তারা সর্বদা একই ফলাফল দেয়।
প্রকৃতপক্ষে, 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
দস্তাবেজগুলিতে একটি উল্লেখও পাই না ।