প্রোগ্রামিং-এ নতুন লোকেদের জন্য একটি সাধারণ ভুল হল বুলিয়ান অপারেটরদের কাজ করার পদ্ধতির একটি ভুল বোঝাবুঝি, যা পাইথন দোভাষী এই অভিব্যক্তিগুলি পড়ার উপায় থেকে উদ্ভূত হয়। উদাহরণস্বরূপ, প্রাথমিকভাবে "এবং " এবং "অথবা" বিবৃতি সম্পর্কে শেখার পরে, কেউ ধরে নিতে পারে যে এক্সপ্রেশন X =('x' বা 'y') এক্সপ্রেশনটি পরীক্ষা করবে যে X পরিবর্তনশীলটি স্ট্রিংগুলির একটির সমতুল্য কিনা। ' বা 'বি'। এই তাই না. বোঝার জন্য, আমি কি বলতে চাইছি, দোভাষীর সাথে একটি ইন্টারেক্টিভ সেশন শুরু করুন এবং নিম্নলিখিত অভিব্যক্তিগুলি লিখুন:
>>> 'x' == ('x' or 'y') True >>> 'y' == ('x' or 'y') False >>> 'x' == ('x' and 'y') False >>> 'y' == ('x' and 'y') True
এই মুহুর্তে, এবং এবং বা অপারেটরটি ভেঙে গেছে বলে মনে হচ্ছে। এটা বোঝায় না যে, প্রথম দুটি অভিব্যক্তির জন্য, 'x' 'x' এর সমতুল্য বা 'y' নয়। তদ্ব্যতীত, এটির কোন অর্থ নেই যে 'y' 'x' এবং 'y' এর সমতুল্য। বুলিয়ান অপারেটরদের সাথে দোভাষী যা করে তা পরীক্ষা করার পরে, এই ফলাফলগুলি আসলে আপনি তাদের কাছে যা জিজ্ঞাসা করছেন ঠিক তাই করে, আপনি যা জিজ্ঞাসা করছেন তা ঠিক একই নয়৷
একটি বা অভিব্যক্তির ক্ষেত্রে, পাইথন দোভাষী প্রথমে প্রথম বিবৃতিটি নেয় এবং সত্য কিনা তা পরীক্ষা করে। যখন প্রথম বিবৃতিটি সত্য হয়, তখন পাইথন দ্বিতীয় যুক্তিটি না দেখে সেই বস্তুর মান ফেরত দেয়। এটি এই কারণে যে একটি বা অভিব্যক্তির জন্য, পুরো জিনিসটি সত্য যদি একটি মান সত্য হয়; এবং প্রোগ্রামটি দ্বিতীয় বিবৃতিতে নজর দেয় না। যাইহোক, যদি প্রথম অবজেক্টের মান মিথ্যাতে মূল্যায়ন করে, পাইথন দ্বিতীয় বিবৃতিটি পরীক্ষা করে এবং সেই মানটি প্রদান করে। দ্বিতীয়ার্ধটি অভিব্যক্তিটির সত্য মান নির্ধারণ করে যেহেতু প্রথমার্ধটি মিথ্যা ছিল। দোভাষীর পক্ষ থেকে এই "অলসতা"কে "শর্ট সার্কিটিং" বলা হয় এবং এটি অনেক প্রোগ্রামিং ভাষায় বুলিয়ান এক্সপ্রেশন মূল্যায়নের একটি সাধারণ উপায়।
একইভাবে, একটি এবং অভিব্যক্তির জন্য, পাইথন সত্য মান মূল্যায়নের গতি বাড়াতে একটি শর্ট সার্কিট কৌশল ব্যবহার করে। যদি প্রথম বিবৃতিটি মিথ্যা হয় তবে পুরো জিনিসটি অবশ্যই মিথ্যা হতে হবে এবং এটি বস্তুর মান (মিথ্যা) প্রদান করে অন্যথায়, প্রথম মানটি সত্য হলে এটি দ্বিতীয়টি পরীক্ষা করে এবং সেই মানটি ফেরত দেয়। কোডের মধ্য দিয়ে যাওয়ার সাথে সাথে দোভাষী "দেখেন" তা দেখে নেওয়া যাক
প্রথম কেস
'x' == ('x' or 'y') # Look at parentheses first, so evaluates "('x' or 'y")" # 'x' is a nonempty string, so the first value is True >>> 'x' == 'x' # the string 'x' is equivalent to the string 'x' , so our expression is True True
দ্বিতীয় কেস
'y' == ('x' or 'y')# Look at parentheses first, so evaluates expression "('x' or 'y')" # 'x' is a nonempty string, so the first value is True #Return that first value : 'x' 'y' == 'x'# the string 'y' is not equivalent to the string 'x', so the expression is False
তৃতীয় কেস
>>> 'x' == ('x' and 'y')# Look at parentheses first, so evaluate expression "('x' and 'y')" #'x' is a nonempty string, so the first value is True, examine second value # 'y' is a nonempty string, so second value is True #Return that second value as result of whole expression: 'y' >>> 'x' == 'y'# the string 'x' is not equivalent to the string 'y', so expression is False False
চতুর্থ কেস
>>> 'y' == ('x' and 'y')# Look at parenthese first, so evaluates expression "('x' and 'y')" True # 'x' is a nonempty string, so the first value is True, examine second value # 'y' is a nonempty string, so second value is True # Return that second value as result of whole expression: 'y' >>> 'y' == 'y'# the string 'y' is equivalent to the string 'y', so expression is True True
শর্ট-সার্কিট মূল্যায়নের অর্থ হল AND এবং OR-এর মতো বুলিয়ান এক্সপ্রেশনের মূল্যায়ন করার সময়, আপনি প্রথম শর্তটি খুঁজে পাওয়ার সাথে সাথে থামতে পারেন যা অভিব্যক্তিটিকে সন্তুষ্ট বা অস্বীকার করে।
অফিসিয়াল ডকুমেন্টেশন দ্বারা শর্ট সার্কিট ব্যাখ্যা করা হয়েছে:
অপারেশন | ফলাফল৷ | বিবরণ |
---|---|---|
x বা y | যদি x মিথ্যা হয়, তাহলে y অন্য x | শুধুমাত্র দ্বিতীয় আর্গুমেন্ট(y) মূল্যায়ন করে যদি প্রথমটি মিথ্যা হয় |
x এবং y | যদি x মিথ্যা হয়, তাহলে x অন্য y | প্রথমটি(x) সত্য হলে শুধুমাত্র দ্বিতীয় যুক্তি(y)টিকে মূল্যায়ন করে |
এক্স নয় | যদি x মিথ্যা হয়, তাহলে সত্য, অন্যথায় মিথ্যা | নন-বুলিয়ান অপারেটরদের চেয়ে কম অগ্রাধিকার নেই |