পাইথনে স্ট্রিংগুলো ইমিউটেবল (অপরিবর্তনশীল), অর্থাৎ একবার স্ট্রিং তৈরি হলে সেটিকে পরিবর্তন করা যায় না। আপনি একটি স্ট্রিং তৈরি করলে, এবং আপনি যদি একই স্ট্রিং আবার তৈরি করে অন্য একটি ভেরিয়েবলে অ্যাসাইন করেন, তবে সেগুলো উভয় একই স্ট্রিং/মেমোরি পয়েন্ট করবে। উদাহরণস্বরূপ,
>>> a = 'hi' >>> b = 'hi' >>> id(a) 43706848L >>> id(b) 43706848L
স্ট্রিং অবজেক্ট এই পুনর্ব্যবহারকে পাইথনে ইন্টারনিং বলা হয়। একই স্ট্রিংদের একই আইডি থাকে। কিন্তু পাইথন স্ট্রিং ইন্টারন করার গ্যারান্টি দেয় না। আপনি যদি এমন স্ট্রিং তৈরি করেন যেগুলো কোড অবজেক্ট কনস্ট্যান্ট নয় অথবা যেগুলোতে অক্ষর, সংখ্যা ও আন্ডারস্কোর বাদে অন্য ক্যারেক্টার থাকে, তবে আপনি দেখবেন id() ভ্যালু পুনর্ব্যবহার হচ্ছে না।
আমরা নিচেরভাবে দেওয়া স্ট্রিং-এর আইডি পরিবর্তন করতে পারি। আমরা এটিকে দুটি ভিন্ন আইডেন্টিফায়ারকে অ্যাসাইন করি। এই ভেরিয়েবলগুলোর আইডি খুঁজলে ভিন্ন পাওয়া যাবে। এর কারণ হলো দেওয়া স্ট্রিং-এ অ্যালফাবেট, ডিজিট ও আন্ডারস্কোর বাদে অন্য ক্যারেক্টার রয়েছে।
>>> a = 'weworks_45#@$' >>> b = 'weworks_45#@$' >>> id(a) 96226208L >>> id(b) 91720800L