আপনি সমস্ত 3 টি দৃষ্টিতে যা দেখেন তা হ'ল ভাষার ব্যাকরণের নির্দিষ্টকরণের ফলাফল এবং উত্স কোডে টোকেনগুলি কীভাবে পার্স ট্রি তৈরি করতে পার্স হয়।
এই নিম্ন স্তরের কোডটি একবার দেখার জন্য হুডের নীচে কী ঘটে তা বুঝতে আপনাকে সহায়তা করা উচিত। আমরা এই পাইথন স্টেটমেন্টগুলি নিতে পারি, এগুলিকে বাইট কোডে রূপান্তর করতে পারি এবং তারপরে dis
মডিউলটি ব্যবহার করে সেগুলি ছড়িয়ে দিতে পারি :
মামলা 1: (0, 0) == 0, 0
>>> dis.dis(compile("(0, 0) == 0, 0", '', 'exec'))
1 0 LOAD_CONST 2 ((0, 0))
3 LOAD_CONST 0 (0)
6 COMPARE_OP 2 (==)
9 LOAD_CONST 0 (0)
12 BUILD_TUPLE 2
15 POP_TOP
16 LOAD_CONST 1 (None)
19 RETURN_VALUE
(0, 0)
প্রথম সাথে প্রথম তুলনা করা হয় 0
এবং এর সাথে মূল্যায়ন করা হয় False
। এরপরে একটি টিপল তৈরি করা হয় এই ফলাফলটি দিয়ে এবং শেষটি 0
, যাতে আপনি পান (False, 0)
।
কেস 2: 0, 0 == (0, 0)
>>> dis.dis(compile("0, 0 == (0, 0)", '', 'exec'))
1 0 LOAD_CONST 0 (0)
3 LOAD_CONST 0 (0)
6 LOAD_CONST 2 ((0, 0))
9 COMPARE_OP 2 (==)
12 BUILD_TUPLE 2
15 POP_TOP
16 LOAD_CONST 1 (None)
19 RETURN_VALUE
0
প্রথম উপাদান হিসাবে একটি tuple নির্মিত হয় । দ্বিতীয় উপাদানটির জন্য, প্রথম ক্ষেত্রে হিসাবে একই চেক করা হয় এবং মূল্যায়ন করা হয় False
, যাতে আপনি পান (0, False)
।
কেস 3: (0, 0) == (0, 0)
>>> dis.dis(compile("(0, 0) == (0, 0)", '', 'exec'))
1 0 LOAD_CONST 2 ((0, 0))
3 LOAD_CONST 3 ((0, 0))
6 COMPARE_OP 2 (==)
9 POP_TOP
10 LOAD_CONST 1 (None)
13 RETURN_VALUE
এখানে, যেমন আপনি দেখতে পাচ্ছেন, আপনি কেবল এই দুটি (0, 0)
টিপল তুলনা করে ফিরে যাচ্ছেন True
।