আপনি যদি দস্তাবেজের দিকে নজর দেন তবে bytes
এটি আপনাকে নির্দেশ করে bytearray
:
বাইটারি ([উত্স [, এনকোডিং [, ত্রুটি]]])
বাইটগুলির একটি নতুন অ্যারে ফিরে আসুন। বাইটেরে টাইপটি 0 <= x <256 পরিসীমাটিতে পূর্ণসংখ্যার একটি পরিবর্তনীয় ক্রম হয় It বাইট অ্যারে পদ্ধতি।
Differentচ্ছিক উত্স প্যারামিটারটি কয়েকটি বিভিন্ন উপায়ে অ্যারে শুরু করতে ব্যবহার করা যেতে পারে:
যদি এটি একটি স্ট্রিং হয় তবে আপনাকে অবশ্যই এনকোডিং (এবং optionচ্ছিকভাবে ত্রুটি) পরামিতিগুলি দিতে হবে; bytearray () তারপরে স্ট্রিংকে স্ট্রেনকোড () ব্যবহার করে বাইটে রূপান্তরিত করে।
যদি এটি একটি পূর্ণসংখ্যা হয় তবে অ্যারেটির আকারটি হবে এবং নাল বাইটের সাহায্যে আরম্ভ করা হবে।
যদি এটি বাফার ইন্টারফেসের সাথে সঙ্গতিপূর্ণ কোনও জিনিস হয় তবে বাইটস অ্যারে শুরু করার জন্য অবজেক্টের কেবল পঠনযোগ্য বাফারটি ব্যবহার করা হবে।
যদি এটি একটি পুনরাবৃত্তিযোগ্য হয় তবে এটি অবশ্যই 0 <= x <256 পরিসরের মধ্যে পূর্ণসংখ্যার পুনরাবৃত্ত হতে হবে, যা অ্যারের প্রাথমিক সামগ্রী হিসাবে ব্যবহৃত হয়।
একটি আর্গুমেন্ট ছাড়া, 0 আকারের একটি অ্যারে তৈরি করা হয়।
সুতরাং bytes
কেবল একটি স্ট্রিং এনকোড করা ছাড়াও আরও অনেক কিছু করা যায়। এটি পাইথোনিক যে এটি আপনাকে কোনও ধরণের উত্স পরামিতি দিয়ে কনস্ট্রাক্টরকে কল করতে দেয়।
স্ট্রিং এনকোডিংয়ের জন্য, আমি মনে করি এটি some_string.encode(encoding)
নির্মাণকারীর চেয়ে বেশি পাইথোনিক, কারণ এটি সর্বাধিক স্ব নথিভুক্ত - "এই স্ট্রিংটি নিন এবং এই এনকোডিং দিয়ে এটি এনকোড করুন" এর চেয়ে পরিষ্কার bytes(some_string, encoding)
- আপনি যখন ব্যবহার করবেন তখন কোনও স্পষ্ট ক্রিয়া নেই কন্সট্রাকটর।
সম্পাদনা: আমি পাইথনের উত্স পরীক্ষা করেছিলাম। আপনি যদি সিপথনbytes
ব্যবহারের জন্য একটি ইউনিকোড স্ট্রিংটি পাস করেন তবে এটি পাইউনিকোড_এএসইঙ্কোড স্ট্রিংকে কল করে যা এটি বাস্তবায়ন encode
; সুতরাং আপনি যদি encode
নিজেকে কল করেন তবে আপনি কেবল মাত্র একটি ইন্ডিরিয়ারেশন এড়িয়ে যাচ্ছেন ।
এছাড়াও, সেরডালিসের মন্তব্য দেখুন - unicode_string.encode(encoding)
এটি আরও বেশি পাইথোনিক কারণ এর বিপরীতটি রয়েছে byte_string.decode(encoding)
এবং প্রতিসাম্য সুন্দর।