কম্পিউটার টিউটোরিয়াল

পাইথনে A += B অ্যাসাইনমেন্ট রিডেল (Tuple Immutable Issue)


এই চ্যাপ্টারে আমরা দেখব টাপল (tuple) -যা আসলে ইমিউটেবল- এর ভ্যালু আপডেট করার সময় কী হয়। নতুন ভ্যালু পুরনোয় মার্জ করা যায় কিন্তু এরর থ্রো করে। এররটির বাইটকোড অধ্যটন করলে টাপলের নিয়ম ভালোভাবে বোঝা যায়।

প্রথমে একটি টাপল ডিফাইন করি এবং এর লাস্ট এলিমেন্ট আপডেট করার কমান্ড দিই।

উদাহরণ

>>> tupl = (5, 7, 9, [1, 4])
>>> tupl[3] += [6, 8]

আউটপুট

Traceback (most recent call last):
  File "", line 1, in
TypeError: 'tuple' object does not support item assignment
>>> tupl
(5, 7, 9, [1, 4, 6, 8])

এখন উপরের পদ্ধতির বাইটকোড অধ্যটন করতে কোডটিকে একটি ফাংশনে রেখে dis মেথড প্রয়োগ করি। একই এরর আসবে কিন্তু বিস্তারিত সহ।

উদাহরণ

def immut_function():
    tupl = (5, 7, 9, [1, 4])
    tupl[3] += [6, 8]
immut_function()

আউটপুট

TypeError Traceback (most recent call last)
in ()
     2 tupl = (5,7,9,[1,4])
     3 tupl[3] += [6,8]
----> 4 immut_function()
in immut_function()
     1 def immut_function():
     2 tupl = (5,7,9,[1,4])
----> 3 tupl[3] += [6,8]
4 immut_function()
TypeError: 'tuple' object does not support item assignment

এখন উপরের ফাংশনের বাইটকোড ডিসপ্লে করি টাপল অ্যাসাইনমেন্ট এবং এরর ডিটেইল দেখতে।

উদাহরণ

import dis
dis.dis(immut_function)

আউটপুট

2    0 LOAD_CONST     1 (5)
     3 LOAD_CONST     2 (7)
     6 LOAD_CONST     3 (9)
     9 LOAD_CONST     4 (1)
    12 LOAD_CONST     5 (4)
    15 BUILD_LIST     2
    18 BUILD_TUPLE    4
    21 STORE_FAST     0 (tupl)
3   24 LOAD_FAST      0 (tupl)
    27 LOAD_CONST     6 (3)
    30 DUP_TOPX       2
    33 BINARY_SUBSCR
    34 LOAD_CONST     7 (6)
    37 LOAD_CONST     8 (8)
    40 BUILD_LIST     2
    43 INPLACE_ADD
    44 ROT_THREE
    45 STORE_SUBSCR
    46 LOAD_CONST     0 (None)
    49 RETURN_VALUE

নিষ্কর্ষ: টাপলে মিউটেবল এলিমেন্ট রাখা উচিত নয়। অ্যাসাইনমেন্ট সম্ভব হলেও এক্সেপশন থ্রো করে। স্টেপ ৪৬-এ দেখানো হয়েছে অ্যাসাইনমেন্ট ফেইল করেছে কারণ টাপল ইমিউটেবল অবজেক্ট।

  1. পাইথনে issuperset() ফাংশন

  2. পাইথনে Quine প্রোগ্রাম (স্ব-প্রजनনকারী কোড)

  3. Python বিটওয়াইজ অ্যাসাইনমেন্ট অপারেটরে ভার্টিক্যাল বার কী?

  4. পাইথনে বিভিন্ন ধরনের অ্যাসাইনমেন্ট অপারেটর কী কী?