উত্তর:
পাইথনের সংস্করণে 3.0 এর আগে দুটি ধরণের স্ট্রিং রয়েছে "প্লেইন স্ট্রিং" এবং "ইউনিকোড স্ট্রিং"। সরল স্ট্রিংগুলি ( str) সরলতার জন্য কোড পৃষ্ঠাগুলির বিবরণ উপেক্ষা করে ল্যাটিন বর্ণমালার বাইরে অক্ষরগুলি উপস্থাপন করতে পারে না। ইউনিকোড স্ট্রিং ( unicode) ক্লিংনের মতো কিছু কাল্পনিক বিষয়গুলি সহ যে কোনও বর্ণমালার অক্ষরকে উপস্থাপন করতে পারে।
সুতরাং কেন দুটি ধরণের স্ট্রিং রয়েছে, কেবল ইউনিকোড থাকা ভাল না যেহেতু এটি সমস্ত ক্ষেত্রে আবরণ করে? তবে কেবল ইউনিকোড থাকা ভাল তবে ইউনিকোড স্ট্রিং উপস্থাপনের জন্য পছন্দের পদ্ধতি হওয়ার আগে পাইথন তৈরি হয়েছিল। স্ট্রিং টাইপটি অনেক ব্যবহারকারীর সাথে একটি ভাষায় রূপান্তর করতে সময় লাগে, পাইথন 3.0.০ এ অবশেষে সব স্ট্রিং ইউনিকোডের ক্ষেত্রে দেখা যায়।
পাইথন স্ট্রিংয়ের উত্তরাধিকারের স্তরক্রম হ'ল প্রাক-3.0
object
|
|
basestring
/ \
/ \
str unicode
'basestring' পাইথন 2.3 চালু স্ট্রিং একীকরণ এর পথে একটি পদক্ষেপ হিসেবে ভাবা যেতে পারে যেমন একটি বস্তুর একটি দৃষ্টান্ত কিনা চেক করতে ব্যবহার করা যেতে পারে strবাunicode
>>> string1 = "I am a plain string"
>>> string2 = u"I am a unicode string"
>>> isinstance(string1, str)
True
>>> isinstance(string2, str)
False
>>> isinstance(string1, unicode)
False
>>> isinstance(string2, unicode)
True
>>> isinstance(string1, basestring)
True
>>> isinstance(string2, basestring)
True
basestringএবং strএবং bytesউভয় উপশ্রেণী objectসরাসরি। তবে নোট করুন যে এটি অর্থবোধ করে, যেহেতু পাই 2 strপাই 3 এর মতো নয় bytes। basestring"চরিত্রের স্ট্রিং" হিসাবে বিবেচনা করা উচিত, যার মধ্যে পাই 3 কেবলমাত্র str। সুতরাং 2to3সরঞ্জামটি এর সাথে প্রতিস্থাপন basestringকরে str।
সমস্ত স্ট্রিং বেসস্ট্রিংস, তবে ইউনিকোড স্ট্রিং টাইপ স্ট্রের নয়। পরিবর্তে এটি চেষ্টা করুন:
>>> a=u'aaaa'
>>> print isinstance(a, basestring)
True
>>> print isinstance(a, str)
False
সত্যিই আপনি যা জিজ্ঞাসা করছেন তা বেসস্ট্রিং এবং স্ট্রেন ক্লাসের মধ্যে পার্থক্য।
Str একটি শ্রেণী যা বেসস্ট্রের থেকে উত্তরাধিকার সূত্রে প্রাপ্ত। তবে ইউনিকোড স্ট্রিংগুলিও রয়েছে, অন্যগুলির মতো, যদি আপনি এটি তৈরি করতে চান।
>>> a = u'aaaa'
>>> isinstance(a, str)
False
>>> isinstance(a, basestring)
True
strএবংbyteএখনও শিশুbasestring? এই সম্পর্কে একটি নোট যোগ করা মূল্যবান হবে।