আমি যখন এই প্রশ্নের উত্তরের দিকে তাকাচ্ছিলাম তখন আমি নিজের উত্তরটি বুঝতে পারি নি।
এটি কীভাবে পার্স করা হচ্ছে তা আমি সত্যি বুঝতে পারি না। দ্বিতীয় উদাহরণটি কী মিথ্যা প্রত্যাবর্তন করবে?
>>> 1 in [1,0] # This is expected
True
>>> 1 in [1,0] == True # This is strange
False
>>> (1 in [1,0]) == True # This is what I wanted it to be
True
>>> 1 in ([1,0] == True) # But it's not just a precedence issue!
# It did not raise an exception on the second example.
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
1 in ([1,0] == True)
TypeError: argument of type 'bool' is not iterable
কোন সাহায্যের জন্য ধন্যবাদ। আমি মনে করি আমি অবশ্যই কিছু স্পষ্টরূপে মিস করছি।
আমি মনে করি এটি লিঙ্কযুক্ত সদৃশ থেকে সূক্ষ্মভাবে পৃথক:
কেন 0 <0 == 0 অভিব্যক্তি পাইথনে মিথ্যা প্রত্যাবর্তন করে? ।
উভয় প্রশ্নই হ'ল প্রকাশের মানবিক বোধগম্যতার সাথে। অভিব্যক্তিটি মূল্যায়নের দুটি উপায় (আমার মনে) আছে বলে মনে হয়েছিল। অবশ্যই দুটিই সঠিক ছিল না, তবে আমার উদাহরণে শেষ ব্যাখ্যাটি অসম্ভব।
আপনি তাকিয়ে 0 < 0 == 0
প্রতিটি অর্ধেক মূল্যায়ন করা এবং একটি অভিব্যক্তি হিসাবে অর্থবোধ কল্পনা করতে পারেন:
>>> (0 < 0) == 0
True
>>> 0 < (0 == 0)
True
সুতরাং লিঙ্ক উত্তর দেয় কেন এটি মূল্যায়ন করে False
:
>>> 0 < 0 == 0
False
তবে আমার উদাহরণটি 1 in ([1,0] == True)
একটি অভিব্যক্তি হিসাবে বোঝায় না, সুতরাং সেখানে দুটি (স্বীকার করে ভুল) সম্ভাব্য ব্যাখ্যার পরিবর্তে কেবল একটিই সম্ভব বলে মনে হচ্ছে:
>>> (1 in [1,0]) == True
==
সাথে বাঁধাগুলি আরও শক্ত হয়in
, সুতরাং[1,0] == True
প্রথমে মূল্যায়ন হয়, তারপরে ফলাফলটি খাওয়ানো যায়1 in other_result
।