পাইথনের `truthy` এবং `falsy`
এই প্রবন্ধে পাইথনের truthy
এবং falsy
ব্যাখ্যা করা হয়েছে।
YouTube Video
পাইথনের truthy
এবং falsy
truthy
এবং falsy
-এর সংজ্ঞা
পাইথনে, শর্তগত এক্সপ্রেশনে মূল্যায়িত বস্তুদের 'True' বা 'False' হিসাবে বিবেচনা করা হয়। Truthy
বলতে বোঝায় যেগুলি 'True' হিসেবে মূল্যায়িত হয়, এবং falsy
বলতে বোঝায় যেগুলি 'False' হিসেবে মূল্যায়িত হয়। এই মূল্যায়ন প্রায়শই শর্তাধীন শাখায় যেমন if
স্টেটমেন্ট বা while
লুপে ব্যবহৃত হয়। এছাড়াও, bool()
ফাংশনটি যেকোনো অবজেক্ট নেয় এবং তার বুলিয়ান মান রিটার্ন করে।
Falsy
(যেসব বস্তু 'False' হিসেবে মূল্যায়িত হয়)
পাইথনে, নিম্নলিখিত অবজেক্টগুলোকে falsy
হিসাবে বিবেচনা করা হয়:।
-
মিথ্যা
-
কিছুই নয়
-
সংখ্যাগত শূন্য মানসমূহ
- উদাহরণ:
0
,0.0
- উদাহরণ:
-
ফাঁকা সিকোয়েন্স টাইপ (যেমন ফাঁকা লিস্ট, টিউপল, বা স্ট্রিং)
- উদাহরণ:
[]
,()
,""
- উদাহরণ:
-
শূন্য ডিকশনারি
- উদাহরণ:
{}
- উদাহরণ:
-
শূন্য সেট
- উদাহরণ:
set()
- উদাহরণ:
এই বস্তুগুলি একটি if
বিবৃতির শর্তে ব্যবহৃত হলে 'মিথ্যা' হিসেবে মূল্যায়িত হয়। উদাহরণস্বরূপ, আপনি এই রকম কোড লিখতে পারেন।
1if not []:
2 print("The list is falsy.")
- এই কোডে, তালিকা
[]
শূন্য, তাই এটিমিথ্যা
হিসেবে মূল্যায়িত হয়, এবংprint
বিবৃতি কার্যকর হয়।
Truthy
(যেসব বস্তু 'True' হিসেবে মূল্যায়িত হয়)
falsy
হিসেবে ধরা হয় না এমন অবজেক্টগুলোকে truthy
হিসেবে গণ্য করা হয়।
-
শূন্য নয় এমন সংখ্যা (ইন্টিজার, ফ্লোটিং পয়েন্ট সংখ্যা)
- উদাহরণ:
1
,3.14
,-100
- উদাহরণ:
-
ফাঁকা নয় এমন সিকোয়েন্স টাইপ (লিস্ট, টিউপল, স্ট্রিং ইত্যাদি)
- উদাহরণ:
[1, 2, 3]
,(1, 2)
,"Hello"
- উদাহরণ:
-
ফাঁকা নয় এমন ডিকশনারি
- উদাহরণ:
{"key": "value"}
- উদাহরণ:
-
ফাঁকা নয় এমন সেট
- উদাহরণ:
{1, 2, 3}
- উদাহরণ:
truthy
হিসেবে বিবেচিত অবজেক্টগুলো if
শর্তে ব্যবহৃত হলে 'True' হিসেবে মূল্যায়িত হয়। উদাহরণস্বরূপ, আপনি এই রকম কোড লিখতে পারেন।
1if [1, 2, 3]:
2 print("The list is truthy.")
- উপরের কোডে, কারণ লিস্ট
[1, 2, 3]
ফাঁকা নয়, এটিtruthy
হিসাবে মূল্যায়িত হয় এবংprint
স্টেটমেন্টটি কার্যকর হয়।
bool()
ফাংশন দিয়ে বুলিয়ান মান মূল্যায়ন
আপনি bool()
ফাংশন ব্যবহার করে অবজেক্টগুলোর বুলিয়ান মান মূল্যায়ন করতে পারেন।
1# Examples of falsy values
2print("False is", "truthy" if bool(False) else "falsy")
3print("0 is", "truthy" if bool(0) else "falsy")
4print('"" is', "truthy" if bool("") else "falsy")
5print("None is", "truthy" if bool(None) else "falsy")
6print("[] is", "truthy" if bool([]) else "falsy")
7
8# Examples of truthy values
9print("1 is", "truthy" if bool(1) else "falsy")
10print('"hello" is', "truthy" if bool("hello") else "falsy")
11print('" " (space) is', "truthy" if bool(" ") else "falsy")
12print('"0" is', "truthy" if bool("0") else "falsy")
- এই কোডটি প্রদর্শন করে কীভাবে বিভিন্ন মানের সত্য-মূল্য মূল্যায়ন করা হয়। উদাহরণস্বরূপ, সংখ্যাগত মান
0
এবং একটি ফাঁকা স্ট্রিংকেFalse
বলে গণ্য করা হয়, যেখানে একটি স্পেস বা স্ট্রিং"0"
-কেTrue
বলে গণ্য করা হয়।
truthy
এবং falsy
এর ব্যবহার
truthy
এবং falsy
ব্যবহারের মাধ্যমে কোডকে আরো সংক্ষেপে এবং সহজবোধ্যভাবে লেখা সম্ভব। বিশেষ করে, if
বিবৃতিগুলি প্রায়ই স্পষ্ট তুলনা ছাড়াই মূল্যায়ন করা যায় যাতে সেগুলি ছোট হয়। উদাহরণস্বরূপ, নিম্নলিখিত দুটি কোডের আচরণ একই রকম, তবে প্রথমটি আরও সংক্ষিপ্ত।
1my_list = [1]
2
3# Explicit comparison
4if my_list != []:
5 print("The list is not empty.")
6
7# Using truthy/falsy
8if my_list:
9 print("The list is not empty.")
উপরে দেওয়া উদাহরণে, আপনি দেখতে পাচ্ছেন যে তালিকা my_list
শূন্য না থাকলে এটিকে truthy
হিসেবে মূল্যায়িত করা হয়, যা স্পষ্ট তুলনার প্রয়োজনীয়তা দূর করে।
truthy
এবং falsy
দিয়ে ডিজাইন করা
truthy
এবং falsy
এর ধারণাগুলি কার্যকরভাবে ব্যবহার করে, আপনি কোডের পাঠযোগ্যতা এবং দক্ষতা বাড়াতে পারেন। এসব বিশেষভাবে ডিফল্ট মান নির্ধারণ, ভেরিয়েবলের বৈধতা পরীক্ষা এবং ইনপুট যাচাইয়ের জন্য উপযোগী। উদাহরণস্বরূপ, যদি আপনি কিছুই নয়
বা একটি খালি তালিকা আর্গুমেন্ট হিসাবে প্রেরণ হতে প্রত্যাশা করেন, আপনি এই রকম কোড লিখতে পারেন।
1def process_data(data=None):
2 data = data or []
3 print(data)
4
5process_data() # An empty list is used by default.
- এই কোডে, যদি
data
None
হয়, তাহলে ডিফল্ট মান হিসেবে ফাঁকা লিস্ট[]
সেট করা হয়। এই পদ্ধতিতে,truthy
এবংfalsy
ব্যবহার করে আপনি সংক্ষেপে ডিফল্ট মান সেট করতে পারেন।
অপ্রত্যাশিত আচরণ এড়াতে লক্ষ্য করার বিষয়বস্তু
তবে, truthy
এবং falsy
মান ব্যবহারকারী কোড সংক্ষিপ্ত ও সুবিধাজনক হলেও, এটি কখনও কখনও অপ্রত্যাশিত আচরণের কারণ হতে পারে তা মনে রাখা দরকার। উদাহরণস্বরূপ, এই কোডে শুধু data
যখন None
সেটি নয়, বরং যখন এটিকে False
হিসাবে মূল্যায়ন করা হয় (যেমন ফাঁকা স্ট্রিং বা 0
), তখনও এটি ডিফল্ট ফাঁকা লিস্ট []
দিয়ে প্রতিস্থাপিত হবে। এই কারণে, যখন একটি কঠোর শর্ত প্রয়োজন, যেমন কেবলমাত্র মানটি None
হলে ইনিশিয়ালাইজ করা, তখন value is None:
এর মত স্পষ্ট শর্ত ব্যবহার করার পরামর্শ দেওয়া হয়। পরিস্থিতির উপর নির্ভর করে, সংক্ষিপ্ততা ও কঠোরতার মধ্যে ভারসাম্য রেখে ডিজাইন করা গুরুত্বপূর্ণ।
1def process_data(data=None):
2 if data is None:
3 data = []
4 print(data)
5
6process_data() # An empty list is used by default.
7process_data(0) # 0 is printed because it's not None.
- এই কোডে,
data
-কে শুধুমাত্র তখনই ফাঁকা তালিকা হিসেবে নির্ধারণ করা হয় যখন এটিNone
, যখন অন্য ভুল (Falsy) মান যেমন0
অপরিবর্তিত থাকে।
কাস্টম অবজেক্টে বুলিয়ান মান নিয়ন্ত্রণ
আপনার নিজের ক্লাসেও, __bool__()
অথবা __len__()
ডিফাইন করে একটি ইনস্ট্যান্সের বুলিয়ান মান নিয়ন্ত্রণ করতে পারেন।
1class MyContainer:
2 def __init__(self, items):
3 self.items = items
4
5 def __len__(self):
6 return len(self.items)
7
8box = MyContainer([])
9print(bool(box)) # False
10
11box.items.append("item")
12print(bool(box)) # True
- এই কোডে,
__len__()
মেথড কনটেইনারটি ফাঁকা হলেFalse
এবং উপাদান থাকলেTrue
হিসেব মূল্যায়ন করে।
উপসংহার
Python-এ truthy
এবং falsy
ধারণাগুলি সংক্ষিপ্ত শর্তযুক্ত বিবৃতি লেখার এবং কোডকে আরও স্বচ্ছন্দ করার জন্য অত্যন্ত গুরুত্বপূর্ণ। এগুলিকে বোঝা এবং সঠিকভাবে ব্যবহার করা কোডের পাঠযোগ্যতা এবং দক্ষতা ব্যাপকভাবে বৃদ্ধি করতে পারে।
আপনি আমাদের ইউটিউব চ্যানেলে ভিজ্যুয়াল স্টুডিও কোড ব্যবহার করে উপরের নিবন্ধটি অনুসরণ করতে পারেন। দয়া করে ইউটিউব চ্যানেলটিও দেখুন।