امیرحسین ناظوری
خواندن ۲ دقیقه·۷ روز پیش

انواع رشته در پایتون

تو این مقاله میپردازیم به اینکه رشته ها داخل پایتون به چند دسته تقسیم میشن و راجب هر کدوم یکسری موارد رو یاد میگیریم.
سلام من امیرحسین ناظوری هستم و پیشنهاد میکنم دیگر مقالاتم رو داخل ویرگول مطالعه کنید 👍

تو پایتون رشته ها بدین شکل دسته بندی میشن :
رشته‌های معمولی (str) : این رشته‌ها شامل کاراکترهای ASCII و Unicode هستن.
رشته‌های بایتی (bytes) : برای داده‌های باینری استفاده میشن.
رشته‌های بایتی تغییرپذیر (bytearray) : یه نسخه تغییرپذیر از bytes هستن.

رشته های معمولی (str) : این رشته‌ها با نوع داده str شناخته میشن و همونایی هستن که همیشه باهاشون کار میکنیم.

رشته های بایتی (bytes) : رشته‌های بایتی برای نشون دادن دنباله‌ای از بایت‌ها استفاده میشن. بایت‌ها واحد اصلی ذخیره‌سازی اطلاعات توی کامپیوتر هستن. هر بایت میتونه مقادیر 0 تا 255 رو داشته باشه. برای ساختن یه رشته bytes از پیشوند b قبل از رشته استفاده میشه :

text = b'Hello' print(type(text)) # <class 'bytes'>

اما یه مشکلی وجود داره ! اگه من از پیشوند b استفاده کنم فقط کاراکتر های ASCII رو قبول میکنه (یعنی نمیتونم کاراکتر های فارسی یا هرچیزی که داخل ASCII نیست رو تبدیل به bytes کنم) برای حل این مشکل دوتا راه حل وجود داره :
1 - استفاده از تابع bytes و مشخص کردن نوع encoding :

text = bytes('Hello', 'utf-8') print(type(text)) # <class 'bytes'>

2 - استفاده از متد encdoe :

text = 'Hello'.encode('utf-8') print(type(text)) # <class 'bytes'>


رشته های بایتی تغییرپذیر (bytearray) : bytearray یه نسخه تغییرپذیر از bytes عه ! این یعنی بعد از اینکه یه bytearray رو تعریف کردی، میتونی بایت‌های داخلش رو تغییر بدی، اضافه کنی یا حذف کنی. در صورتی که رشته‌های bytes غیرقابل تغییر (immutable) هستن. برای ساخت bytearray باید از تابع bytearray استفاده کرد و به سه روش میشه اینکارو انجام داد :

byte_array = bytearray(b'Hello') print(type(bytearray)) # <class 'bytearray'>

یا

byte_array = bytearray('Hello'.encode('utf-8')) print(type(bytearray)) # <class 'bytearray'>

یا

byte_array = bytearray('Hello', 'utf-8') print(type(bytearray)) # <class 'bytearray'>

درکل آرگومان bytearray باید یک رشته bytes باشه.


📕 عاشق یادگیری و به اشتراک‌گذاری دانش -- آیدی من تو شبکه های اجتماعی : mrNazouri13
شاید از این پست‌ها خوشتان بیاید