اذهب إلى المحتوى

السؤال

نشر

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

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

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

Recommended Posts

  • 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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...