Immutability – Unchangeability in Python

Immutability – Unchangeability – पिछले Example में हमने कई तरीकों से Strings को Access and Manipulate किया लेकिन हमने Original String में किसी Program में कोई Change नहीं किया है बल्कि प्रत्‍येक Example Program के प्रत्‍येक Operation में एक नया String Produce हो रहा है और ऐसा इसलिए है क्‍योंकि Python में Strings Immutable होते हैं।

यानी हम एक बार जब किसी String Object को Create करके किसी Variable में Assign कर देते हैं, उसके बाद पूरे Program में उस Variable में Stored Actual String को Change नहीं किया जा सकता। अन्‍य शब्‍दों में कहें तो Python में हम किसी Immutable Object की Values को कभी भी Overwrite नहीं कर सकते। इसे समझने के लिए हम निम्‍नानुसार एक Example Program Create कर सकते हैं-


FileName: Immutability.py
str = "ROHIT"
print("Name: ", str)
print()

# Trying to Change Character "R" with "M" for Modified String "MOHIT"
str[0] = "M"
print("Changed Name: ", str)

Output
Name:  ROHIT
Traceback (most recent call last):
  File "Immutability.py", line 8, in <module>
    str[0] = "M"
TypeError: 'str' object does not support item assignment

इस Example में सबसे पहले हमने एक String Object str Create किया है और उसमें String “ROHIT” Text Value Store करके अगले Statement में उसे Print कर दिया है। फिर अगले Statement में हमने निम्‍नानुसार str String के First Character को Change करने का प्रयास किया है-

str[0] = “M”

लेकिन इसके Execute होते ही हमें एक Error Message प्राप्‍त होता है और ये Error Message इसलिए प्राप्‍त होता है, क्‍योंकि हम str Object के Actual Text Content में ही Change करके पहले Character “R” को “M” से Replace करने का प्रयास कर रहे हैं और Python किसी Immutable Object के Data को एक बार Assign कर देने के बाद Change करने की Permission नहीं देता।

Python में सभी Objects को Immutable या Mutable होने के लिए पहले से ही Classified कर दिया गया है। Python के Numbers, Strings और Tuple Core Types, Immutable Data Types हैं, जिन्‍हें उपरोक्‍तानुसार Discussed तरीके से Change नहीं किया जा सकता, जबकि Lists, DictionariesSets Core Types, Mutable Data Types हैं, जिन्‍हें किसी Class के Objects की तरह जरूरत के अनुसार पूरे Program के दौरान कभी भी Change किया जा सकता है।

इस तरह से Immutability को हम इस बात की Guarantee के रूप में Use कर सकते हैं कि किस Data Type के Identifier पूरे Program के दौरान हमेंशा Constant रहेंगे और किस Data Type के Identifier पूरे Program के दौरान जरूरत होने पर कहीं भी Change किए जा सकेंगे या हमारी जानकारी के बिना भी Dynamically Change हो सकेंगे।

यद्धपि जैसा कि हमने पहले Discuss किया कि हम किसी String के Text Data को एक बार Define करके किसी Identifier में Assign कर देने के बाद उसे Change नहीं कर सकते, लेकिन यदि हम उसी Text Data को एक List Object में Store कर दें, तो उस List Object में String के सभी Individual Characters एक List Item Object की तरह Expand हो जाते हैं।

परिणामस्‍वरूप इस Expanded List Items में हम किसी पहले से Exist Character को Change कर सकते हैं और फिर join() Method का प्रयोग करके हम List के सभी Individual Characters को एक String के रूप में Return कर सकते हैं। इस पूरी प्रक्रिया को निम्‍न Example Program द्वारा ज्‍यादा बेहतर तरीके से समझ सकते हैं-


FileName: ImmutabilityChanging.py
str = "ROHIT"
print("Original str: ", str)

# Creating a List Object to EXPAND str's
# TEXT DATA as Individual Character Objects
listStr = list(str)
print(listStr)

# Change First Character Object in the listStr
listStr[0] = "M"
print()
print("Changed str: ", ''.join(listStr))
print("Original str: ", str)

Output
Original str:  ROHIT
['R', 'O', 'H', 'I', 'T']
Changed str:  MOHIT
Original str:  ROHIT

इस तरह से हम किसी Immutable String के Text Data को Modify करके Retrieve कर सकते हैं लेकिन यहां भी ये बात ध्‍यान रखने वाली है कि हम Actual String Data में इस तरीके से भी कोई Change नहीं कर पा रहे हैं। इसी वजह से पहले और अन्तिम print() Statement द्वारा जब हम Actual str String Object को Display करते हैं, तो हमें दोनों बार समान Text Data “ROHIT” ही प्राप्‍त होता है।


Special Discount Offer

खरीदिए एक से ज्‍यादा EBooks, और पाईए ₹100 से ₹1200 तक का Extra Cash Discount

Discount Coupon Codes