যদিও এই প্রশ্নের অনুশীলনে বাস্তবে কোনও ব্যবহার নেই, তবে পাইথন কীভাবে স্ট্রিং ইন্টার্নিং করে তা সম্পর্কে আমি আগ্রহী। আমি নিম্নলিখিতটি লক্ষ্য করেছি।
>>> "string" is "string"
True
আমার প্রত্যাশা অনুযায়ী এটি
আপনি এটি করতে পারেন।
>>> "strin"+"g" is "string"
True
এবং এটি বেশ চালাক!
তবে আপনি এটি করতে পারবেন না।
>>> s1 = "strin"
>>> s2 = "string"
>>> s1+"g" is s2
False
পাইথন কেন মূল্যায়ন করবে না s1+"g"
এবং বুঝতে পারে যে এটি একইরকম s2
এবং একই ঠিকানার দিকে এটি নির্দেশ করবে? এটি ফিরে আসার জন্য সেই শেষ ব্লকে আসলে কী চলছে False
?
"string1" + "s2"
,10 + 3*20
ইত্যাদি) কম্পাইল সময়, কিন্তু এর ফলে সীমা সিকোয়েন্স মাত্র 20 উপাদান (প্রতিরোধ[None] * 10**1000
মাত্রাতিরিক্ত আপনার বাইটকোড বিস্তৃত থেকে)। এটি এই অপটিমাইজেশন যা ধসে"strin" + "g"
পড়ে"string"
; ফলাফলটি 20 টির চেয়ে কম সংখ্যক।