পাইথনে অপারেটরগুলো

পাইথনে অপারেটরগুলো

এই প্রবন্ধটি পাইথনে অপারেটরগুলো ব্যাখ্যা করে।

YouTube Video

পাইথনে অপারেটরগুলো

পাইথনে বিভিন্ন ধরনের অপারেটর রয়েছে, যা সাধারণত নিম্নলিখিত বিভাগে ভাগ করা যায়। আমরা প্রতিটি বিভাগের জন্য প্রধান অপারেটরগুলো ব্যাখ্যা করব।

গাণিতিক অপারেটর

গাণিতিক অপারেটর হল সংখ্যার উপর গণনা চালানোর জন্য ব্যবহৃত অপারেটর।

অপারেটর অর্থ উদাহরণ
+ যোগ 3 + 25
- বিয়োগ 3 - 21
* গুণ 3 * 26
/ ভাগ (সবসময় ভগ্নাংশ বা ফ্লোট) 3 / 21.5
// ফ্লোর ডিভিশন (পূর্ণাংশ ভাগফল) 3 // 21
% অবশিষ্টাংশ (মডুলো) 3 % 21
** ঘাত 3 ** 29
 1a = 10
 2b = 3
 3
 4print(f"{a} + {b} = {a + b}")     # Addition
 5print(f"{a} - {b} = {a - b}")     # Subtraction
 6print(f"{a} * {b} = {a * b}")     # Multiplication
 7print(f"{a} / {b} = {a / b}")     # Division (float)
 8print(f"6 / 3 = {6 / 3}")         # Division (float)
 9print(f"{a} // {b} = {a // b}")   # Floor Division
10print(f"{a} % {b} = {a % b}")     # Modulo (remainder)
11print(f"{a} ** {b} = {a ** b}")   # Exponentiation
  • চারটি মৌলিক গণিত ক্রিয়ার সাথে সাথে, পাইথনে বিভাজন (/), পূর্ণসংখ্যা বিভাজন (//), মডুলাস (%), এবং সূচকীয় (**) এর জন্য অপারেটরগুলিও দেয়। বিভাজন অপারেটর পূর্ণসংখ্যার উপরে কাজ করলেও একটি ফ্লোটিং-পয়েন্ট সংখ্যা রিটার্ন করে।

অ্যাসাইনমেন্ট অপারেটর

এ্যাসাইনমেন্ট অপারেটরগুলি ভেরিয়েবলের মধ্যে মান নির্ধারণ করতে ব্যবহৃত হয়।

অপারেটর অর্থ উদাহরণ
= এ্যাসাইনমেন্ট x = 5
+= যোগ ও নির্ধারণ x += 2x = x + 2
-= বিয়োগ ও নির্ধারণ x -= 2x = x - 2
*= গুণ ও নির্ধারণ x *= 2x = x * 2
/= ভাগ ও নির্ধারণ x /= 2x = x / 2
//= ফ্লোর ডিভিশন (পূর্ণাংশ ভাগফল) x //= 2x = x // 2
%= অবশিষ্টাংশ নির্ধারণ x %= 2x = x % 2
**= ঘাত নির্ধারণ x **= 2x = x ** 2
&= AND (এন্ড) ব্যবহার করে মান নির্ধারণ x &= 0b1010x = x & 0b1010
|= OR (অর) ব্যবহার করে মান নির্ধারণ x | = 0b0011x = x | 0b0011
^= XOR (এক্সক্লুসিভ অর) ব্যবহার করে মান নির্ধারণ x ^= 0b0101x = x ^ 0b0101
<<= বাঁ দিকে শিফট করার পরে মান নির্ধারণ x <<= 2x = x << 2
>>= ডান দিকে শিফট করার পরে মান নির্ধারণ x >>= 1x = x >> 1
:= এসাইনমেন্ট এক্সপ্রেশন (ওয়ালরাস অপারেটর) if (n := len(data)) > 10:শর্ত যাচাই করার সময় n-এ মান সংরক্ষণ
 1x = 5           # x = 5
 2
 3x += 3          # x = x + 3
 4x -= 2          # x = x - 2
 5x *= 4          # x = x * 4
 6x /= 3          # x = x / 3
 7x //= 2         # x = x // 2
 8x %= 5          # x = x % 5
 9x **= 3         # x = x ** 3
10
11x = 0b1100      # x = 0b1100 (12)
12
13x &= 0b1010     # x = x & 0b1010
14x |= 0b0011     # x = x | 0b0011
15x ^= 0b0101     # x = x ^ 0b0101
16x <<= 2         # x = x << 2
17x >>= 1         # x = x >> 1
18
19print(bin(x))   # Display in binary
20print(x)        # Display in decimal
21
22# Walrus operator
23if (n := len("hello")) > 3:
24    print(f"Length is {n}")
  • এসাইনমেন্ট অপারেটর আপনাকে বিভিন্ন অপারেটরের সাথে মান নির্ধারণ একসাথে করার সুযোগ দেয় এবং ফলাফলটি নির্ধারণ করে।
  • ওয়ালরাস অপারেটর (:=) হল একটি এসাইনমেন্ট এক্সপ্রেশন, যা পাইথন ৩.৮ এবং পরবর্তী সংস্করণে পাওয়া যায়।
  • যেখানে সাধারন এসাইনমেন্ট শুধুমাত্র একটি স্টেটমেন্ট হিসেবে ব্যবহার করা যায়, ওয়ালরাস অপারেটর এক্সপ্রেশনের ভেতরে মান নির্ধারণের সুযোগ দেয়।

তুলনামূলক অপারেটর

তুলনা অপারেটর মানগুলিকে তুলনা করে এবং True অথবা False ফেরত দেয়।

অপারেটর অর্থ উদাহরণ
== সমান 3 == 3True
!= অসমান 3 != 4True
> এর চেয়ে বড় 5 > 2
< এর চেয়ে ছোট 5 < 2
>= এর চেয়ে বড় বা সমান 5 >= 5
<= এর চেয়ে ছোট বা সমান 3 <= 4
 1a = 10
 2b = 20
 3
 4# Equal to (==)
 5print(f"{a} == {b} -> {a == b}")      # False: a and b are not equal
 6print(f"3 == 3.0 -> {3 == 3.0}")      # True: int and float with the same value are equal
 7print(f"3 == '3' -> {3 == '3'}")      # False: different types (int vs str)
 8print(f"True == 1 -> {True == 1}")    # True: True is equivalent to 1
 9print(f"False == 0 -> {False == 0}")  # True: False is equivalent to 0
10print(f"None == 0 -> {None == 0}")    # False: None is not equal to 0
11
12# Not equal to (!=)
13print(f"{a} != {b} -> {a != b}")      # True: a and b are not equal
14
15# Greater than (>)
16print(f"{b} > {a} -> {b > a}")        # True: 20 > 10
17
18# Less than (<)
19print(f"{a} < {b} -> {a < b}")        # True: 10 < 20
20
21# Greater than or equal to (>=)
22print(f"{a} >= 10 -> {a >= 10}")      # True: a is greater than or equal to 10
23
24# Less than or equal to (<=)
25print(f"{a} <= 10 -> {a <= 10}")      # True: a is less than or equal to 10
  • তুলনা অপারেটর দুটি মানের অনুক্রম বা সমতা যাচাই করে এবং ফলাফল হিসেবে True অথবা False রিটার্ন করে।
  • পাইথনে বিভিন্ন ডেটা টাইপ তুলনা করার সময় সতর্ক থাকতে হবে। কিছু টাইপ একে অপরের সাথে তুলনা করা যায়, তবে ফলাফল সবসময় প্রত্যাশিত নাও হতে পারে।

যৌক্তিক অপারেটর

যৌক্তিক অপারেটর যৌক্তিক এক্সপ্রেশন মিলিত করতে ব্যবহৃত হয়।

অপারেটর অর্থ উদাহরণ
and উভয়টি সত্য হলে True ফেরত দেয় True and FalseFalse
or কোনো একটি সত্য হলে True ফেরত দেয় True or FalseTrue
not বুলিয়ান মান উল্টে দেয় not TrueFalse
1x = 10
2print(x > 5 and x < 20)  # True
3print(x < 5 or x > 20)   # False
4print(not x == 10)       # False
  • and একটি লজিক্যাল অপারেটর, যা শুধুমাত্র তখনই True রিটার্ন করে, যখন উভয় পাশের শর্তই True হয়।
  • or একটি লজিক্যাল অপারেটর, এটি তখনই True রিটার্ন করে, যখন যেকোনো এক পাশের শর্ত True হয়।
  • not একটি লজিক্যাল অপারেটর, এটি কোনো শর্তের সত্য/মিথ্যা মান উল্টে দেয়। যদি এটি সত্য (True) হয়, তবে তা মিথ্যা (False) হয়ে যায়, এবং যদি মিথ্যা (False) হয় তাহলে সত্য (True) হয়ে যায়।

লজিক্যাল অপারেটরসমূহের অগ্রাধিকার

অপারেটরদের অগ্রাধিকার থাকে। এটি সেই নিয়ম যা নির্ধারণ করে যে কোনো এক্সপ্রেশনে কোন অপারেটর প্রথমে মূল্যায়ন করা হবে। লজিক্যাল অপারেটরসমূহ এই ক্রমে মূল্যায়ন করা হয়: not, and, তারপর or

1result = True or False and False
2print(result)  # True
3
4result = (True or False) and False
5print(result)  # False

たとえば、

প্রথম উদাহরণে, and অপারেটরটি প্রথমে মূল্যায়িত হয়, তাই False and False হয় False, এবং ফলস্বরূপ True or False হয় True। আপনি চাইলে ব্র্যাকেট (parentheses) ব্যবহার করে মূল্যায়নের ক্রম পরিবর্তন করতে পারেন, যেমনটি দ্বিতীয় উদাহরণে দেখানো হয়েছে।

বিটওয়াইজ অপারেটর

বিটওয়াইজ অপারেটর বিট স্তরে অপারেশনগুলি সম্পাদন করে।

অপারেটর অর্থ উদাহরণ
& বিটওয়াইজ AND 5 & 31
| বিটওয়াইজ OR 5 | 37
^ বিটওয়াইজ এক্সক্লুসিভ OR (XOR) 5 ^ 36
~ বিটওয়াইজ NOT ~5-6
<< বামদিকে সরানো (Left shift) 5 << 110
>> ডানদিকে সরানো (Right shift) 5 >> 12
 1# Sample code for bitwise operators
 2
 3# Define two integers
 4a = 5  # Binary: 0101
 5b = 3  # Binary: 0011
 6
 7# Bitwise AND
 8result_and = a & b  # Binary: 0001 -> Decimal: 1
 9print(f"{a} & {b} = {result_and}")
10
11# Bitwise OR
12result_or = a | b  # Binary: 0111 -> Decimal: 7
13print(f"{a} | {b} = {result_or}")
14
15# Bitwise XOR
16result_xor = a ^ b  # Binary: 0110 -> Decimal: 6
17print(f"{a} ^ {b} = {result_xor}")
18
19# Bitwise NOT (inverting bits)
20result_not = ~a  # Binary: -(0101 + 1) -> Decimal: -6
21print(f"~{a} = {result_not}")
22
23# Left shift
24shift_left = a << 1  # Binary: 1010 -> Decimal: 10
25print(f"{a} << 1 = {shift_left}")
26
27# Right shift
28shift_right = a >> 1  # Binary: 0010 -> Decimal: 2
29print(f"{a} >> 1 = {shift_right}")
  • আপনি বিটওয়াইজ AND, OR, XOR, NOT অপারেশন, এবং বিট শিফট অপারেশনও করতে পারেন। আপনি এগুলোকে এসাইনমেন্ট অপারেটরের (&=) সঙ্গে একত্রে ব্যবহারও করতে পারেন।

সদস্যপদ অপারেটর

সদস্যপদ অপারেটর তালিকা এবং অভিধানের মতো সংগ্রহশালাগুলির সাথে ব্যবহৃত হয়।

 1x = [1, 2, 3]
 2y = 2
 3z = 4
 4
 5print("y in x : ", y in x)  # Result is True
 6print("z in x : ", z in x)  # Result is False
 7
 8print("y not in x : ", y not in x)  # Result is False
 9print("z not in x : ", z not in x)  # Result is True
10
11text = "hello world"
12print("'world' in 'hello world' : ",      "world" in text)      # True
13print("'python' not in 'hello world' : ", "python" not in text) # True
  • in অপারেটরটি ব্যবহার করা হয় নির্ধারণ করার জন্য যে কোনও নির্দিষ্ট মান একটি ক্রম (যেমন তালিকা বা স্ট্রিং) অথবা একটি সংগ্রহ (যেমন অভিধান)-এ অন্তর্ভুক্ত আছে কি না
  • not in অপারেটরটি ব্যবহার করা হয় নির্ধারণ করার জন্য যে কোনও নির্দিষ্ট মান একটি ক্রম বা সংগ্রহে অন্তর্ভুক্ত নেই কি না।

পরিচয় অপারেটর

পরিচয় অপারেটর বস্তুগুলির পরিচয় যাচাই করে।

 1x = [1, 2, 3]
 2y = x
 3z = x.copy()
 4
 5print("x is y : ", x is y)  # Result is True
 6print("x is z : ", x is z)  # Result is False
 7
 8print("x is not y : ", x is not y)  # Result is False
 9print("x is not z : ", x is not z)  # Result is True
10
11print("x == y : ", x == y)  # Result is True
12print("x == z : ", x == z)  # Result is True
  • is অপারেটর যাচাই করে দুটি অবজেক্ট একই অবজেক্ট কি না (অর্থাৎ, একই মেমোরি লোকেশন নির্দেশ করছে কি না)।
  • is not অপারেটর যাচাই করে দুটি অবজেক্ট ভিন্ন অবজেক্ট কি না।
  • উদাহরণস্বরূপ, x is y এবং x == y ভিন্ন― কারণ এখানে অবজেক্ট আইডেন্টিটি যাচাই হয়, মান সমতা নয়।

টাইপ চেকিং

Python-এ, আপনি নির্দিষ্ট টাইপের কিনা তা যাচাই করতে isinstance() ফাংশন ব্যবহার করতে পারেন। আপনি চাইলে কোনো ভেরিয়েবলের সঠিক টাইপ দেখতে type() ফাংশনও ব্যবহার করতে পারেন। যদিও এগুলি অপারেটর নয়, এগুলি টাইপ চেক করার মৌলিক পদ্ধতি।

 1x = 10
 2print(isinstance(x, int))  # True
 3
 4y = "hello"
 5print(isinstance(y, str))  # True
 6
 7z = [1, 2, 3]
 8print(isinstance(z, list))  # True
 9
10print(type(10))        # <class 'int'>
11print(type("hello"))   # <class 'str'>
12
13print("isinstance(3, int) : ", isinstance(3, int))  # True
14print("type(3) is int : ", type(3) is int)          # True
15print("type(True) is bool : ", type(True) is bool)  # True
  • isinstance() একটি ফাংশন, যা কোনো অবজেক্ট নির্দিষ্ট কোনো ক্লাস বা তার সাবক্লাসের উদাহরণ কি না, তা যাচাই করে।
  • type() একটি ফাংশন, যা কোনো অবজেক্টের নির্দিষ্ট টাইপ (ক্লাস) রিটার্ন করে। খুব কড়া টাইপ তুলনা করতে হলে সাধারণত এটি ব্যবহার করা হয়।
  • isinstance() ইনহেরিটেন্স সম্পর্ক যাচাই করে, অথচ type() শুধুমাত্র সম্পূর্ণ মিলে যায় কি না, তা দেখে।

সারসংক্ষেপ

প্রত্যেকটি অপারেটর ব্যবহার করার সময়, তার উদ্দেশ্য এবং প্রকারের উপর ভিত্তি করে সঠিকভাবে নির্বাচন করতে হবে। যেহেতু পাইথন একটি ডায়নামিকালি টাইপড ভাষা, অপারেশনের ফলাফল গণনা করা মানগুলির প্রকারের উপর নির্ভর করে ভিন্ন হতে পারে।

আপনি আমাদের ইউটিউব চ্যানেলে ভিজ্যুয়াল স্টুডিও কোড ব্যবহার করে উপরের নিবন্ধটি অনুসরণ করতে পারেন। দয়া করে ইউটিউব চ্যানেলটিও দেখুন।

YouTube Video