• 0

ما الفرق بين isinstance('aaa', basestring) و isinstance('aaa', str) في بايثون؟

أريد معرفة هل يوجد أي فرق بين نوع str و basestring في لغة بايثون، لأنني جربت معرفة نوع سلسلة نصية فوجدت أنه في كلا الحالتين ترجع لي دالة isinstance قيمة منطقية true كما يظهر هنا:

a='aaaa'
print isinstance(a, basestring)#true
print isinstance(a, str)#true

فهل يوجد أي فرق بين النوعين؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

في إصدارات بايثون ما قبل الإصدار الثالث يوجد نوعين من السلاسل النصية وهما plain strings وunicode strings.
إن السلسلة النصية من نوع plain strings (str) لا يمكنها استعراض حروف من خارج الأبجدية اللاتينية في حين أن السلسلة النصية من نوع Unicode strings (unicode) يمكنها استعراض حروف من أي أبجدية والتي من بينها لغات وأبجديات خيالية مثل Klingon.
هذا هو التسلسل الهرمي للسلاسل النصية في إصدارات بايثون ما قبل الإصدار 3:

          object
             |
             |
         basestring
            / \
           /   \
         str  unicode

لذلك في حالات مقارنة سلسلتين نصيتين عادية و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

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن