از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
پیشوند ‘b’ در زبان پایتون String Literals
سرفصلهای مطلب
معرفی
در پایتون، ممکن است با یک رشته واقعی با پیشوند کاراکتر ‘b’ برخورد کرده باشید و تعجب کرده باشید که معنی آن چیست. هدف این بایت روشن کردن این ویژگی رشتههای پایتون، ارتباط آن با یونیکد و رشتههای باینری و روش استفاده از آن در کد شماست.
رشته های باینری در پایتون
پیشوند ‘b’ در لفظهای رشته پایتون برای ایجاد یک بایت تحت اللفظی استفاده می شود. هنگامی که یک رشته را با ‘b’ پیشوند قرار می دهید، به پایتون می گویید که رشته را به عنوان داده باینری در نظر بگیرد. این می تواند زمانی مفید باشد که باید با داده ها در سطح بایت کار کنید.
bs = b'Hello, Python!'
print(bs)
خروجی:
b'Hello, Python!'
در مثال بالا، پیشوند “b” به پایتون می گوید که “سلام، پایتون!” یک بایت تحت اللفظی است، نه یک رشته معمولی. هنگامی که آن را چاپ می کنید، پایتون پیشوند b را در خروجی نشان می دهد تا نشان دهد که یک شی بایت است، نه یک شی str.
نکته ای که باید به خاطر داشت این است که یک شی بایت تغییرناپذیر است. این بدان معناست که وقتی یک شی بایت را تعریف کردید، نمی توانید عناصر آن را تغییر دهید. با این حال، می توانید یک شی بایت را به یک شی بایت آرایه تبدیل کنید که قابل تغییر است.
ba = bytearray(bs)
ba(0) = 74
print(ba)
خروجی:
bytearray(b'Jello, Python!')
در مثال بالا، ابتدا شی bytes را به یک شی بایت آرایه تبدیل می کنیم. سپس اولین بایت بایت آرایه را تغییر می دهیم. وقتی آن را چاپ می کنیم، می بینیم که کاراکتر اول از «H» به «J» تغییر کرده است.
پیشوند ‘b’ با انواع داده های مختلف
اکنون، بیایید بررسی کنیم که چگونه پیشوند ‘b’ با انواع داده های مختلف در پایتون کار می کند. وقتی یک b را جلوی یک رشته تحت اللفظی قرار می دهید، پایتون رشته را به صورت بایت تفسیر می کند. این به ویژه زمانی مفید است که با داده های باینری سروکار دارید، مانند داده هایی که از یک فایل باینری خوانده می شوند یا از طریق شبکه دریافت می شوند.
بیایید یک مثال بزنیم. کد زیر را امتحان کنید:
b_string = b'Hello, rasanegar readers!'
print(b_string)
این خروجی را خواهید دید:
b'Hello, rasanegar readers!'
شما می توانید ببینید که پیشوند ‘b’ در خروجی حفظ شده است، که نشان می دهد این یک شی بایت است، نه یک رشته معمولی.
توجه داشته باشید: هنگامی که از پیشوند ‘b’ استفاده می کنید، فقط می توانید کاراکترهای ASCII را در رشته خود وارد کنید. اگر سعی کنید یک کاراکتر غیر ASCII اضافه کنید، پایتون یک علامت را افزایش می دهد SyntaxError
.
مثلا:
b_string = b'Hello, rasanegar readers! 👋'
print(b_string)
این یک را افزایش می دهد SyntaxError
:
File "<stdin>", line 1
SyntaxError: bytes can only contain ASCII literal characters.
این به این دلیل است که پیشوند ‘b’ به پایتون می گوید که رشته را به عنوان بایت تفسیر کند و بایت ها فقط می توانند کاراکترهای ASCII را نشان دهند.
چرا از رشته های باینری استفاده می کنیم؟
بیایید چند مورد استفاده را برای انتخاب رشته بایت نسبت به سایر انواع داده ببینیم:
استفاده از حافظه
وقتی با داده های باینری سروکار دارید که به ویژگی های اضافی ارائه شده توسط رشته های معمولی نیاز ندارند، رشته های بایت از نظر حافظه کارآمدتر هستند. در پایتون، یک رشته معمولی یونیکد است و بنابراین برای نمایش یک کاراکتر به چندین بایت نیاز دارد. از سوی دیگر، یک رشته بایت تنها از یک بایت در هر عنصر استفاده می کند، که می تواند به ویژه هنگام کار با مجموعه داده های بزرگ یا هنگام دستکاری فایل های باینری مفید باشد.
عملیات I/O
اگر با فایل I/O سروکار دارید که شامل فایلهای باینری، مانند تصاویر یا فایلهای اجرایی است، رشتههای بایت تقریباً یک ضرورت هستند. هنگامی که یک فایل باینری را می خوانید، داده ها به صورت بایت در حافظه خوانده می شوند. اگر میخواهید در این سناریو از رشتههای معمولی استفاده کنید، باید عملیات اضافی را برای تبدیل دادههای باینری به نمایش رشته یونیکد انجام دهید، که میتواند هم زمانبر و هم مستعد خطا باشد.
برنامه نویسی شبکه
در حوزه برنامه نویسی شبکه، رشته های بایت می توانند کارها را به طور قابل توجهی ساده کنند. بیشتر پروتکل های شبکه انتظار دارند که داده ها در قالبی شبیه بایت ارسال شوند. با استفاده از رشته های بایت، می توانید به راحتی بسته ها را بدون نگرانی در مورد رمزگذاری متن و مجموعه کاراکتر بسازید.
سازگاری با کتابخانه های C
سناریوی دیگری که در آن رشتههای بایت به کار میآیند، هنگام رابط با کتابخانههای C است. زبان برنامه نویسی C اغلب از آرایه های بایتی برای رشته ها استفاده می کند. اگر از پایتون استفاده می کنید ctypes
کتابخانه یا سایر روشهای مشابه برای فراخوانی توابع C، متوجه خواهید شد که رشتههای بایت راهی بدون دردسر برای انتقال دادههای رشتهای بین پایتون و C ارائه میکنند.
عملیات باینری ساده شده
رشتههای بایت عملیات بیتی آسانتری مانند AND، OR و XOR را امکانپذیر میکنند که ممکن است هنگام کار با رشتههای معمولی دست و پا گیر باشند. اگر روی الگوریتمهای رمزگذاری، فشردهسازی دادهها یا سایر کارهایی که نیاز به دستکاری بیتی دارند کار میکنید، رشتههای بایت این عملیات را بسیار آسانتر میکنند.
نتیجه
در این بایت، استفاده از پیشوند ‘b’ در حروف الفبای رشته پایتون را بررسی کرده ایم. ما آموخته ایم که این پیشوند به پایتون می گوید که رشته را به جای یک رشته معمولی به عنوان بایت تفسیر کند. این در هنگام کار با داده های باینری مفید است، اما به این معنی است که فقط می توانید کاراکترهای ASCII را در رشته خود وارد کنید.
پایتون یک زبان قدرتمند با ویژگی های زیادی است که برای آسان کردن زندگی شما به عنوان یک برنامه نویس طراحی شده است. پیشوند ‘b’ تنها یکی از این ویژگیها است، اما برای درک اینکه آیا با دادههای باینری کار میکنید یا خیر، مفید است.
(برچسبها به ترجمه)# python
منتشر شده در 1402-12-27 22:58:08