الفرق بين المراجعتين ل"Python/bytes"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE:البايتات في بايثون}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:البايتات في بايثون}}</noinclude>
البايتات هي تسلسلات لبايتات مفردة غير قابلة للتغيير immutable، وهي مشابهة إلى حدّ كبير للسلاسل النصية. توفّر هذه الكائنات توابع تكون صالحة للاستخدام مع البيانات ذات الترميز ASCII نظرًا لأنّ الكثير من البروتوكولات الثنائية الرئيسية مستندة إلى هذا الترميز.
+
البايتات هي تسلسلات لبايتات مفردة غير قابلة للتغيير (immutable)، وهي مشابهة إلى حدّ كبير للسلاسل النصية. توفّر هذه الكائنات توابع تكون صالحة للاستخدام مع البيانات ذات الترميز ASCII نظرًا لأنّ الكثير من البروتوكولات الثنائية الرئيسية مستندة إلى هذا الترميز.
  
 
صيغة تعريف البايتات مماثلة لصيغة تعريف السلاسل النصية، باستثناء إضافة السابقة <code>b</code> إلى عبارة التعريف وكما يلي:<syntaxhighlight lang="python3">
 
صيغة تعريف البايتات مماثلة لصيغة تعريف السلاسل النصية، باستثناء إضافة السابقة <code>b</code> إلى عبارة التعريف وكما يلي:<syntaxhighlight lang="python3">
b'still allows embedded "double" quotes' # علامات اقتباس مفردة
+
b'still allows embedded "double" quotes'       # علامات اقتباس مفردة
b"still allows embedded 'single' quotes". # علامات اقتباس مزدوجة
+
b"still allows embedded 'single' quotes".       # علامات اقتباس مزدوجة
b'''3 single quotes''', b"""3 double quotes""" # علامات اقتباس ثلاثية
+
b'''3 single quotes''', b"""3 double quotes""" # علامات اقتباس ثلاثية
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
يمكن استخدام الدالة <code>bytes()‎</code> كصيغة بديلة لتعريف البايتات:<syntaxhighlight lang="python3">
 
يمكن استخدام الدالة <code>bytes()‎</code> كصيغة بديلة لتعريف البايتات:<syntaxhighlight lang="python3">
bytes(10) # كائن بايتات فارغ وله طول محدّد
+
bytes(10)       # كائن بايتات فارغ وله طول محدّد
 
bytes(range(20)) # باستخدام مدى من الأعداد الصحيحة
 
bytes(range(20)) # باستخدام مدى من الأعداد الصحيحة
 
</syntaxhighlight>
 
</syntaxhighlight>
  
يسمح باستخدام حروف الترميز ASCII (بصرف النظر عن الترميز المستخدم في الشيفرة)، ويجب إدخال أي قيمة ثنائية تتجاوز 127 باستخدام تسلسل التهريب escape الملائم.
+
يسمح باستخدام حروف الترميز ASCII (بصرف النظر عن الترميز المستخدم في الشيفرة)، ويجب إدخال أي قيمة ثنائية تتجاوز 127 باستخدام تسلسل التهريب (escape sequence) الملائم.
  
 
كما هو الحال مع [[Python/str|السلاسل النصية]]، فبالإمكان استخدام السابقة <code>r</code> لإيقاف عملية تهريب الحروف.  
 
كما هو الحال مع [[Python/str|السلاسل النصية]]، فبالإمكان استخدام السابقة <code>r</code> لإيقاف عملية تهريب الحروف.  
سطر 25: سطر 25:
 
[[تصنيف:Python]]
 
[[تصنيف:Python]]
 
[[تصنيف:Python Types]]
 
[[تصنيف:Python Types]]
[[تصنيف:Bytes]]
 
[[تصنيف:Binary sequence]]
 

مراجعة 05:16، 10 مارس 2018

البايتات هي تسلسلات لبايتات مفردة غير قابلة للتغيير (immutable)، وهي مشابهة إلى حدّ كبير للسلاسل النصية. توفّر هذه الكائنات توابع تكون صالحة للاستخدام مع البيانات ذات الترميز ASCII نظرًا لأنّ الكثير من البروتوكولات الثنائية الرئيسية مستندة إلى هذا الترميز.

صيغة تعريف البايتات مماثلة لصيغة تعريف السلاسل النصية، باستثناء إضافة السابقة b إلى عبارة التعريف وكما يلي:

b'still allows embedded "double" quotes'        # علامات اقتباس مفردة
b"still allows embedded 'single' quotes".       # علامات اقتباس مزدوجة
b'''3 single quotes''', b"""3 double quotes"""  # علامات اقتباس ثلاثية

يمكن استخدام الدالة bytes()‎ كصيغة بديلة لتعريف البايتات:

bytes(10)        # كائن بايتات فارغ وله طول محدّد
bytes(range(20)) # باستخدام مدى من الأعداد الصحيحة

يسمح باستخدام حروف الترميز ASCII (بصرف النظر عن الترميز المستخدم في الشيفرة)، ويجب إدخال أي قيمة ثنائية تتجاوز 127 باستخدام تسلسل التهريب (escape sequence) الملائم.

كما هو الحال مع السلاسل النصية، فبالإمكان استخدام السابقة r لإيقاف عملية تهريب الحروف.

صحيح أنّ تمثيل البايتات يستند إلى النصوص ذات الترميز ASCII؛ إلا أنّ كائنات البايتات تسلك في الواقع سلوك تسلسل من الأعداد الصحيحة غير قابل للتغيير، وتكون كل قيمة في هذا التسلسل مقيّدة بالشرط الرياضية ‎0 <= x < 256‎، ويؤدي تجاوز هذه القيود إلى إطلاق الخطأ ValueError.

وضعت هذه القيود بصورة متعمّدة وذلك لتأكيد فكرة مفادها أنّه قد يكون بإمكان بعض خوارزميات معالجة النصوص أن تتعامل مع البيانات الثنائية إلّا أنّ الحال لا يكون كذلك دائمًا؛ فقد يؤدي معالجة البيانات الثنائية غير المرمّزة بالترميز ASCII بواسطة خوارزميات التعامل مع النصوص إلى تدمير البيانات.

مصادر