यदि आप डॉक्स को देखते हैं bytes
, तो यह आपको bytearray
निम्न बिंदुओं की ओर इशारा करता है :
bytearray ([स्रोत [, एन्कोडिंग [, त्रुटियाँ]]])
बाइट्स की एक नई सरणी लौटें। बाइटरेयर प्रकार 0 <= x <256 सीमा में पूर्णांकों का एक परिवर्तनशील अनुक्रम है। इसमें उत्परिवर्ती अनुक्रमों के सामान्य तरीकों में से अधिकांश हैं, जो म्यूटेबल सीक्वेंस प्रकारों में वर्णित हैं, साथ ही अधिकांश विधियाँ जो बाइट्स प्रकार की हैं, देखें बाइट्स और बाइट ऐरे मेथड्स।
वैकल्पिक स्रोत पैरामीटर का उपयोग कुछ भिन्न तरीकों से सरणी को इनिशियलाइज़ करने के लिए किया जा सकता है:
यदि यह एक स्ट्रिंग है, तो आपको एन्कोडिंग (और वैकल्पिक रूप से, त्रुटियां) पैरामीटर भी देना होगा; bytearray () तब string को बाइट्स में कनवर्ट करके str.encode () का उपयोग करता है।
यदि यह एक पूर्णांक है, तो सरणी में वह आकार होगा और नल बाइट्स के साथ आरंभीकृत किया जाएगा।
यदि यह बफ़र इंटरफ़ेस के अनुरूप एक ऑब्जेक्ट है, तो बाइट्स सरणी को इनिशियलाइज़ करने के लिए ऑब्जेक्ट का केवल-पठन बफर का उपयोग किया जाएगा।
यदि यह एक चलने योग्य है, तो यह 0 <= x <256 सीमा में पूर्णांकों का एक पुनरावृत्ति होना चाहिए, जो कि सरणी की प्रारंभिक सामग्री के रूप में उपयोग किया जाता है।
एक तर्क के बिना, आकार 0 का एक सरणी बनाया जाता है।
तो bytes
बस एक स्ट्रिंग को एन्कोड करने से बहुत कुछ हो सकता है। यह पाइथोनिक है कि यह आपको किसी भी प्रकार के स्रोत पैरामीटर के साथ कंस्ट्रक्टर को कॉल करने की अनुमति देगा जो समझ में आता है।
एक स्ट्रिंग को एन्कोडिंग के लिए, मुझे लगता है कि some_string.encode(encoding)
कंस्ट्रक्टर का उपयोग करने की तुलना में अधिक पायथोनिक है, क्योंकि यह सबसे स्व-दस्तावेजीकरण है - "इस स्ट्रिंग को लें और इसे इस एन्कोडिंग के साथ एनकोड करें" की तुलना में स्पष्ट है bytes(some_string, encoding)
- जब आप स्ट्रिंग का उपयोग करते हैं तो कोई स्पष्ट क्रिया नहीं होती है। निर्माता।
संपादित करें: मैंने पायथन स्रोत की जाँच की। यदि आप bytes
CPython का उपयोग करने के लिए एक यूनिकोड स्ट्रिंग पास करते हैं, तो यह PyUnicode_AsEncodedString को कॉल करता है, जिसका कार्यान्वयन है encode
; इसलिए यदि आप encode
स्वयं को कॉल करते हैं तो आप अप्रत्यक्ष स्तर को छोड़ रहे हैं ।
इसके अलावा, सर्दालिस की टिप्पणी देखें - unicode_string.encode(encoding)
यह भी अधिक पायथोनिक है क्योंकि इसका उलटा है byte_string.decode(encoding)
और समरूपता अच्छी है।