আইসনস্ট্যান্স ('আআ', বেসস্ট্রিং) এবং ইসিস্ট্যান্স ('আআআ', স্ট্র) এর মধ্যে পার্থক্য কী?


উত্তর:


387

পাইথনের সংস্করণে 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

13
পাইথন 3 এ এই পরিবর্তন হয়েছিল? নতুন strএবং byteএখনও শিশু basestring? এই সম্পর্কে একটি নোট যোগ করা মূল্যবান হবে।
MestreLion

14
@ মাস্টারলিয়ন: এটি পরিবর্তন হয়েছে; Py3 কোন হয়েছে basestringএবং strএবং bytesউভয় উপশ্রেণী objectসরাসরি। তবে নোট করুন যে এটি অর্থবোধ করে, যেহেতু পাই 2 strপাই 3 এর মতো নয় bytesbasestring"চরিত্রের স্ট্রিং" হিসাবে বিবেচনা করা উচিত, যার মধ্যে পাই 3 কেবলমাত্র str। সুতরাং 2to3সরঞ্জামটি এর সাথে প্রতিস্থাপন basestringকরে str
সেরেন ল্যাভবর্গ

8

সমস্ত স্ট্রিং বেসস্ট্রিংস, তবে ইউনিকোড স্ট্রিং টাইপ স্ট্রের নয়। পরিবর্তে এটি চেষ্টা করুন:

>>> a=u'aaaa'
>>> print isinstance(a, basestring)
True
>>> print isinstance(a, str)
False

4

সত্যিই আপনি যা জিজ্ঞাসা করছেন তা বেসস্ট্রিং এবং স্ট্রেন ক্লাসের মধ্যে পার্থক্য।

Str একটি শ্রেণী যা বেসস্ট্রের থেকে উত্তরাধিকার সূত্রে প্রাপ্ত। তবে ইউনিকোড স্ট্রিংগুলিও রয়েছে, অন্যগুলির মতো, যদি আপনি এটি তৈরি করতে চান।

>>> a = u'aaaa'
>>> isinstance(a, str)
False
>>> isinstance(a, basestring)
True

1

বেসস্ট্রিং স্ট্রিংয়ের সুপারক্লাস। আপনার উদাহরণে, "টাইপ" টাইপ এর प्रकार, এটি বেসস্ট্রিং এবং স্ট্র উভয়ই

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.