الفرق بين المراجعتين لصفحة: «Python/bytes»

من موسوعة حسوب
لا ملخص تعديل
 
(2 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:البايتات في بايثون}}</noinclude>
<noinclude>{{DISPLAYTITLE:البايتات byte في بايثون}}</noinclude>
البايتات هي تسلسلات لبايتات مفردة غير قابلة للتغيير (immutable)، وهي مشابهة إلى حدّ كبير [[Python/str|للسلاسل النصية]]. توفّر هذه الكائنات توابع تكون صالحة للاستخدام مع البيانات ذات الترميز ASCII نظرًا لأنّ الكثير من البروتوكولات الثنائية الرئيسية مستندة إلى هذا الترميز.
البايتات هي تسلسلات لبايتات مفردة غير قابلة للتغيير (immutable)، وهي مشابهة إلى حدّ كبير [[Python/str|للسلاسل النصية]]. توفّر هذه الكائنات توابع تكون صالحة للاستخدام مع البيانات ذات الترميز ASCII نظرًا لأنّ الكثير من البروتوكولات الثنائية الرئيسية مستندة إلى هذا الترميز.
 
==تعريف البايتات==
== تعريف البايتات ==
صيغة تعريف البايتات مماثلة لصيغة تعريف [[Python/str|السلاسل النصية]]، باستثناء إضافة السابقة <code>b</code> إلى عبارة التعريف وكما يلي:<syntaxhighlight lang="python3">
صيغة تعريف البايتات مماثلة لصيغة تعريف [[Python/str|السلاسل النصية]]، باستثناء إضافة السابقة <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>يسمح باستخدام حروف الترميز ASCII (بصرف النظر عن الترميز المستخدم في الشيفرة)، ويجب إدخال أي قيمة ثنائية تتجاوز القيمة <code>127</code> باستخدام تسلسل التهريب (escape sequence) الملائم. وكما هو الحال مع [[Python/str|السلاسل النصية]]، فبالإمكان استخدام السابقة <code>r</code> لإيقاف عملية تهريب الحروف.


يسمح باستخدام حروف الترميز ASCII (بصرف النظر عن الترميز المستخدم في الشيفرة)، ويجب إدخال أي قيمة ثنائية تتجاوز القيمة <code>127</code> باستخدام تسلسل التهريب (escape sequence) الملائم. وكما هو الحال مع [[Python/str|السلاسل النصية]]، فبالإمكان استخدام السابقة <code>r</code> لإيقاف عملية تهريب الحروف.
صحيح أنّ تمثيل البايتات يستند إلى النصوص ذات الترميز ASCII؛ إلا أنّ كائنات البايتات تسلك في الواقع سلوك تسلسل من [[Python/int|الأعداد الصحيحة]] غير قابل للتغيير، وتكون كل قيمة في هذا التسلسل مقيّدة بالشرط الرياضي ‎<code>0 <= x < 256‎</code>، ويؤدي تجاوز هذه القيود إلى إطلاق الخطأ <code>[[Python/built-in exceptions#ValueError|ValueError]]</code>.
 
صحيح أنّ تمثيل البايتات يستند إلى النصوص ذات الترميز ASCII؛ إلا أنّ كائنات البايتات تسلك في الواقع سلوك تسلسل من [[Python/int|الأعداد الصحيحة]] غير قابل للتغيير، وتكون كل قيمة في هذا التسلسل مقيّدة بالشرط الرياضي ‎<code>0 <= x < 256‎</code>، ويؤدي تجاوز هذه القيود إلى إطلاق الخطأ <code>ValueError</code>.


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


البايتات هي الكائن المُقابل غير القابل للتّغيير (immutable) [[Python/bytearray|لمصفوفات البايتات]] القابلة للتّغيير، وللبايتات نفس التّوابع والعمليّات (التي لا يُمكن لها أن تُغيّر من الكائن) التي تملكها مصفوفات البايتات.
البايتات هي الكائن المُقابل غير القابل للتّغيير (immutable) [[Python/bytearray|لمصفوفات البايتات]] القابلة للتّغيير، وللبايتات نفس التّوابع والعمليّات (التي لا يُمكن لها أن تُغيّر من الكائن) التي تملكها مصفوفات البايتات.
 
==الدالة <code>bytes()‎</code>==
== الدالة <code>bytes()‎</code> ==
يمكن استخدام الدالة <code>bytes()‎</code> كصيغة بديلة لتعريف البايتات:<syntaxhighlight lang="python3">
يمكن استخدام الدالة <code>bytes()‎</code> كصيغة بديلة لتعريف البايتات:<syntaxhighlight lang="python3">
bytes(10)        # كائن بايتات فارغ وله طول محدّد
bytes(10)        # كائن بايتات فارغ وله طول محدّد
bytes(range(20)) # باستخدام مدى من الأعداد الصحيحة
bytes(range(20)) # باستخدام مدى من الأعداد الصحيحة
</syntaxhighlight>
</syntaxhighlight>طريقة استعمال المُعاملات مع الدالة <code>bytes()‎</code> هي نفسها طريقة استعمال [[Python/bytearray#.D8.A7.D9.84.D9.85.D8.B9.D8.A7.D9.85.D9.84.D8.A7.D8.AA|مُعاملات]] الدّالة <code>bytearray()‎</code>.
 
==الدوال التابعة للكائن <code>bytes</code>==
طريقة استعمال المُعاملات مع الدالة <code>bytes()‎</code> هي نفسها طريقة استعمال [[Python/bytearray#.D8.A7.D9.84.D9.85.D8.B9.D8.A7.D9.85.D9.84.D8.A7.D8.AA|مُعاملات]] الدّالة <code>bytearray()‎</code>.
===<code>[[Python/bytes/fromhex|bytes.fromhex()‎]]</code>===
 
فك ترميز <nowiki/>[[Python/str|سلسلة نصية]] تتضمن أعداد ست عشرية إلى كائن bytes.
== الدوال التابعة للكائن <code>bytes</code> ==
===<code>[[Python/bytes/hex|bytes.hex()‎]]</code>===
=== <code>[[Python/bytes/fromhex|bytes.fromhex()‎]]</code> ===
ترميز كائن bytes إلى <nowiki/>[[Python/str|سلسلة نصية]] تتضمن عددين ستّ عشريين مقابل كلّ بايت.
تفكّ الدالة ترميز <nowiki/>[[Python/str|سلسلة نصية]] تتضمن أعداد ست عشرية إلى كائن bytes.
===<code>[[Python/bytes/count|bytes.count()‎]]</code>===
 
إعادة عدد مرات ظهور تسلسل فرعي ضمن كائن bytes.
=== <code>[[Python/bytes/hex|bytes.hex()‎]]</code> ===
===<code>[[Python/bytes/decode|bytes.decode()‎]]</code>===
ترمّز الدالة كائن bytes إلى <nowiki/>[[Python/str|سلسلة نصية]] تتضمن عددين ستّ عشريين مقابل كلّ بايت.
فك ترميز البايتات الممرّرة إليها إلى <nowiki/>[[Python/str|سلسلة نصية]].
 
===<code>[[Python/bytes/endswith|bytes.endswith()‎]]</code>===
=== <code>[[Python/bytes/count|bytes.count()‎]]</code> ===
التحقق من وجود تسلسل فرعي في نهاية البيانات الثنائية الأصلية.
تعيد هذه الدالة عدد مرات ظهور تسلسل فرعي ضمن كائن bytes.
===<code>[[Python/bytes/find|bytes.find()‎]]</code>===
 
إعادة أدنى قيمة للفهرس والذي يكون التسلسل الفرعي موجودًا في ضمن البيانات الثنائية.
=== <code>[[Python/bytes/decode|bytes.decode()‎]]</code> ===
===<code>[[Python/bytes/index|bytes.index()‎]]</code>===
تفك الدالة ترميز البايتات الممرّرة إليها إلى <nowiki/>[[Python/str|سلسلة نصية]].
يؤدي هذا التابع نفس وظيفة التابع <code>[[Python/bytes/find|bytes.find()‎]]</code> ولكنّه يطلق الخطأ <code>[[Python/built-in exceptions#ValueError|ValueError]]</code> إن لم يعثر على التسلسل الفرعي.
 
===<code>[[Python/bytes/join|bytes.join()‎]]</code>===
=== <code>[[Python/bytes/endswith|bytes.endswith()‎]]</code> ===
إعادة كائن البياتات أو كائن [[Python/bytearray|مصفوفة البايتات]] الناتج عن ربط البيانات الثنائية التابعة لكائن قابل للتكرار (iterable).
تتحقّق الدالة من وجود تسلسل فرعي في نهاية البيانات الثنائية الأصلية.
===<code>[[Python/bytes/maketrans|bytes.maketrans()‎]]</code>===
 
يعيد هذا التابع الساكن جدول تحويل (translation table) يمكن استخدامه بواسطة التابع <code>[[Python/bytes/translate|bytes.translate()‎]]</code>.
=== <code>[[Python/bytes/find|bytes.find()‎]]</code> ===
===<code>[[Python/bytes/partition|bytes.partition()‎]]</code>===
تعيد الدالة‎ أدنى قيمة للفهرس والذي يكون التسلسل الفرعي موجودًا في ضمن البيانات الثنائية.
تقسيم التسلسل عند أول ظهور للقيمة التي يحدّدها المستخدم.
 
===<code>[[Python/bytes/replace|bytes.replace()‎]]</code>===
=== <code>[[Python/bytes/index|bytes.index()‎]]</code> ===
تبديل العبارة التي يختارها المستخدم - مهما تكرّرت في تسلسل البيانات الثنائية - إلى القيمة الجديدة التي يحدّدها.
تؤدي هذه الدالة نفس وظيفة الدالة <code>[[Python/bytes/find|bytes.find()‎]]</code> ولكنّها تطلق الخطأ <code>ValueError</code> إن لم تعثر على التسلسل الفرعي.
===<code>[[Python/bytes/rfind|bytes.rfind()‎]]</code>===
 
إعادة أعلى قيمة للفهرس في التسلسل الأصلي حيث تجد فيه التسلسل الفرعي.
=== <code>[[Python/bytes/join|bytes.join()‎]]</code> ===
===<code>[[Python/bytes/rindex|bytes.rindex()‎]]</code>===
تعيد الدالة  كائن البياتات أو كائن [[Python/bytearray|مصفوفة البايتات]] الناتج عن ربط البيانات الثنائية التابعة لكائن قابل للتكرار (iterable).
يشبه التابع <code>[[Python/bytes/rfind|bytes.rfind()‎]]</code> في أنّه يحدّد أعلى قيمة للفهرس تجد فيه التسلسل الفرعي ضمن التسلسل الأصلي، ويختلف عنه في أنّه يطلق الخطأ <code>[[Python/built-in exceptions#ValueError|ValueError]]</code> إن لم يعثر على التسلسل الفرعي.
 
===<code>[[Python/bytes/rpartition|bytes.rpartition()‎]]</code>===
=== <code>[[Python/bytes/maketrans|bytes.maketrans()‎]]</code> ===
تقسيم البيانات الثنائية عند آخر ظهور للقيمة التي يحدّدها المستخدم.
تعيد هذه الدالة الساكنة جدول ترجمة (translation table) يمكن استخدامه بواسطة الدالة <code>[[Python/bytes/translate|bytes.translate()‎]]</code>.
===<code>[[Python/bytes/startswith|bytes.startswith()‎]]</code>===
 
التحقق من أنّ البيانات الثنائية تبدأ بالقيمة التي يحدّدها المستخدم.
=== <code>[[Python/bytes/partition|bytes.partition()‎]]</code> ===
===<code>[[Python/bytes/translate|bytes.translate()‎]]</code>===
تقسم هذه الدالة التسلسل عند أول ظهور للقيمة التي يحدّدها المستخدم.
إعادة تسلسل البيانات الثنائية بعد إجراء عمليات الربط والحذف بالاعتماد على جدول التحويل الذي ينشئه التابع <code>[[Python/bytes/maketrans|bytes.maketrans()‎]]</code>.
 
=== <code>[[Python/bytes/replace|bytes.replace()‎]]</code> ===
تبدّل هذه الدالة العبارة التي يختارها المستخدم - مهما تكرّرت في تسلسل البيانات الثنائية - بالقيمة الجديدة التي يحدّدها.
 
=== <code>[[Python/bytes/rfind|bytes.rfind()‎]]</code> ===
تعيد الدالة أعلى قيمة للفهرس في التسلسل الأصلي حيث تجد فيه التسلسل الفرعي.
 
=== <code>[[Python/bytes/rindex|bytes.rindex()‎]]</code> ===
تشبه الدالة <code>[[Python/bytes/rfind|bytes.rfind()‎]]</code> في أنّها تحدّد أعلى قيمة للفهرس تجد فيه التسلسل الفرعي ضمن التسلسل الأصلي، وتختلف عنها في أنّها تطلق الخطأ <code>ValueError</code> إن لم تعثر على التسلسل الفرعي.
 
=== <code>[[Python/bytes/rpartition|bytes.rpartition()‎]]</code> ===
تقسم هذه الدالة البيانات الثنائية عند آخر ظهور للقيمة التي يحدّدها المستخدم.
 
=== <code>[[Python/bytes/startswith|bytes.startswith()‎]]</code> ===
تتحقّق الدالة من أنّ البيانات الثنائية تبدأ بالقيمة التي يحدّدها المستخدم.
 
=== <code>[[Python/bytes/translate|bytes.translate()‎]]</code> ===
تعيد الدالة تسلسل البيانات الثنائية بعد إجراء عمليات الربط والحذف بالاعتماد على جدول الترجمة الذي تنشئه الدالة <code>[[Python/bytes/maketrans|bytes.maketrans()‎]]</code>.
 
'''ملاحظة:''' تفترض الدوال التالية استخدام بيانات ثنائية متوافقة مع الترميز ASCII ولكن يمكن استخدامها مع أي نوع من البيانات الثنائية عن طريق تمرير المعاملات المناسبة.
 
=== <code>[[Python/bytes/center|bytes.center()‎]]</code> ===
تعيد الدالة البيانات الثنائية مزاحة نحو الوسط ضمن تسلسل يحمل طولًا يحدّده المستخدم.
 
=== <code>[[Python/bytes/ljust|bytes.ljust()‎]]</code> ===
تعيد الدالة نسخة من البيانات الثنائية مزاحة نحو اليسار ضمن تسلسل ذي طول محدّد.
 
=== <code>[[Python/bytes/lstrip|bytes.lstrip()‎]]</code> ===
تحذف الدالة البايتات المحدّدة من بداية التسلسل.
 
=== <code>[[Python/bytes/rjust|bytes.rjust()‎]]</code> ===
تعيد الدالة نسخة من البيانات الثنائية مزاحة نحو اليمين ضمن تسلسل ذي طول محدّد.
 
=== <code>[[Python/bytes/rsplit|bytes.rsplit()‎]]</code> ===
تقسّم الدالة التسلسل الثنائي إلى تسلسلات فرعية من النوع ذاته بالاعتماد على تسلسل ثنائي يحدّد الفاصل.
 
=== <code>[[Python/bytes/rstrip|bytes.rstrip()‎]]</code> ===
تحذف الدالة البايتات المحدّدة من نهاية التسلسل.
 
=== <code>[[Python/bytes/split|bytes.split()‎]]</code> ===
تقسّم الدالة التسلسل الثنائي إلى <nowiki/>[[Python/list|قائمة]] من تسلسلات ثنائية فرعية من النوع ذاته، بالاعتماد على فاصل محدّد.
 
=== <code>[[Python/bytes/strip|bytes.strip()‎]]</code> ===
تحذف الدالة البايتات المحدّدة من قبل المستخدم من نهاية وبداية التسلسل.
 
'''ملاحظة:''' تفترض الدوال التالية استخدام بيانات ثنائية متوافقة مع الترميز ASCII ولا يمكن استخدامها مع الأنواع الأخرى من البيانات الثنائية.
 
=== <code>[[Python/bytes/capitalize|bytes.capitalize()‎]]</code> ===
تفسر الدالة البيانات الثنائية كحروف في ترميز ASCII وتحوّل الحرف الأول إلى حرف كبير، والحروف الأخرى إلى حروف صغيرة.
 
=== <code>[[Python/bytes/expandtabs|bytes.expandtabs()‎]]</code> ===
تحوّل الدالة جميع علامات الجدولة في ترميز ASCII إلى مسافة بيضاء واحدة أو أكثر في الترميز ذاته.
 
=== <code>[[Python/bytes/isalnum|bytes.isalnum()‎]]</code> ===
تتحقّق هذه الدالة ممّا إذا كانت جميع البايتات في التسلسل الثنائي حروفًا أو أرقامًا عشرية في ترميز ASCII، ومن أنّ التسلسل ليس فارغًا.
 
=== <code>[[Python/bytes/isalpha|bytes.isalpha()‎]]</code> ===
تتحقّق الدالة ممّا إذا كان تسلسل البيانات الثنائية يحتوي على الحروف بترميز ASCII فقط، وأنّ التسلسل ليس فارغًا.
 
=== <code>[[Python/bytes/isdigit|bytes.isdigit()‎]]</code> ===
تتحقّق الدالة ممّا إذا كان التسلسل الثنائي مكوّنًا من الأعداد العشرية بترميز ASCII فقط، وأنّ التسلسل ليس فارغًا.
 
=== <code>[[Python/bytes/islower|bytes.islower()‎]]</code> ===
تتحقّق الدالة ممّا إذا كان التسلسل الثنائي يحتوي على حرف واحد صغير على الأقل بترميز ASCII، وتتحقّق من عدم وجود حروف كبيرة.
 
=== <code>[[Python/bytes/isspace|bytes.isspace()‎]]</code> ===
تتحقّق الدالة ممّا إذا كانت جميع البايتات في التسلسل الثنائي هي بايتات المسافة البيضاء في ترميز ASCII، ومن أنّ التسلسل ليس فارغًا.
 
=== <code>[[Python/bytes/istitle|bytes.istitle()‎]]</code> ===
تتحقّق الدالة ممّا إذا كان التسلسل الثنائي هو تسلسل ASCII بحالة titlecase، ومن أنّ التسلسل ليس فارغًا.
 
=== <code>[[Python/bytes/isupper|bytes.isupper()‎]]</code> ===
تتحقّق الدالة ممّا إذا كان التسلسل الثنائي يحتوي على حرف واحد كبير على الأقل بترميز ASCII، وتتحقّق من عدم وجود حروف صغيرة.
 
=== <code>[[Python/bytes/lower|bytes.lower()‎]]</code> ===
تحول الدالة جميع الحروف بترميز ASCII في التسلسل الثنائي إلى حروف صغيرة.
 
=== <code>[[Python/bytes/splitlines|bytes.splitlines()‎]]</code> ===
تقسم الدالة التسلسل الثنائي إلى <nowiki/>[[Python/list|قائمة]] من الأسطر.
 
=== <code>[[Python/bytes/swapcase|bytes.swapcase()‎]]</code> ===
تقلب الدالة‎ حالة الحروف بترميز ASCII في التسلسل الثنائي.
 
=== <code>[[Python/bytes/title|bytes.title()‎]]</code> ===
تحوّل الدالة‎ أوائل الكلمات في التسلسل الثنائي إلى أحرف كبيرة Title Case بترميز ASCII.


=== <code>[[Python/bytes/upper|bytes.upper()‎]]</code> ===
'''ملاحظة:''' تفترض التوابع التالية استخدام بيانات ثنائية متوافقة مع الترميز ASCII ولكن يمكن استخدامها مع أي نوع من البيانات الثنائية عن طريق تمرير المعاملات المناسبة.
تحول الدالة جميع الحروف بترميز ASCII في التسلسل الثنائي إلى حروف كبيرة.
===<code>[[Python/bytes/center|bytes.center()‎]]</code>===
إعادة البيانات الثنائية مزاحة نحو الوسط ضمن تسلسل يحمل طولًا يحدّده المستخدم.
===<code>[[Python/bytes/ljust|bytes.ljust()‎]]</code>===
إعادة نسخة من البيانات الثنائية مزاحة نحو اليسار ضمن تسلسل ذي طول محدّد.
===<code>[[Python/bytes/lstrip|bytes.lstrip()‎]]</code>===
حذف البايتات المحدّدة من بداية التسلسل.
===<code>[[Python/bytes/rjust|bytes.rjust()‎]]</code>===
إعادة نسخة من البيانات الثنائية مزاحة نحو اليمين ضمن تسلسل ذي طول محدّد.
===<code>[[Python/bytes/rsplit|bytes.rsplit()‎]]</code>===
تقسيم التسلسل الثنائي إلى تسلسلات فرعية من النوع ذاته بالاعتماد على تسلسل ثنائي يحدّد الفاصل.
===<code>[[Python/bytes/rstrip|bytes.rstrip()‎]]</code>===
حذف البايتات المحدّدة من نهاية التسلسل.
===<code>[[Python/bytes/split|bytes.split()‎]]</code>===
تقسيم التسلسل الثنائي إلى <nowiki/>[[Python/list|قائمة]] من تسلسلات ثنائية فرعية من النوع ذاته، بالاعتماد على فاصل محدّد.
===<code>[[Python/bytes/strip|bytes.strip()‎]]</code>===
حذف البايتات المحدّدة من قبل المستخدم من نهاية وبداية التسلسل.


=== <code>[[Python/bytes/zfill|bytes.zfill()‎]]</code> ===
'''ملاحظة:''' تفترض التوابع التالية استخدام بيانات ثنائية متوافقة مع الترميز ASCII ولا يمكن استخدامها مع الأنواع الأخرى من البيانات الثنائية.
تضيف الدالة‎ العدد <code>‎b'0'‎</code> من الترميز ASCII إلى يسار التسلسل الثنائي ليصبح التسلسل بالطول المحدد من قبل المستخدم.
===<code>[[Python/bytes/capitalize|bytes.capitalize()‎]]</code>===
تفسير البيانات الثنائية كحروف في ترميز ASCII وتحوّل الحرف الأول إلى حرف كبير، والحروف الأخرى إلى حروف صغيرة.
===<code>[[Python/bytes/expandtabs|bytes.expandtabs()‎]]</code>===
تحويل جميع علامات الجدولة في ترميز ASCII إلى مسافة بيضاء واحدة أو أكثر في الترميز ذاته.
===<code>[[Python/bytes/isalnum|bytes.isalnum()‎]]</code>===
التحقق ممّا إذا كانت جميع البايتات في التسلسل الثنائي حروفًا أو أرقامًا عشرية في ترميز ASCII، ومن أنّ التسلسل ليس فارغًا.
===<code>[[Python/bytes/isalpha|bytes.isalpha()‎]]</code>===
التحقق ممّا إذا كان تسلسل البيانات الثنائية يحتوي على الحروف بترميز ASCII فقط، وأنّ التسلسل ليس فارغًا.
===<code>[[Python/bytes/isdigit|bytes.isdigit()‎]]</code>===
التحقق ممّا إذا كان التسلسل الثنائي مكوّنًا من الأعداد العشرية بترميز ASCII فقط، وأنّ التسلسل ليس فارغًا.
===<code>[[Python/bytes/islower|bytes.islower()‎]]</code>===
التحقق ممّا إذا كان التسلسل الثنائي يحتوي على حرف واحد صغير على الأقل بترميز ASCII، والتحقق من عدم وجود حروف كبيرة.
===<code>[[Python/bytes/isspace|bytes.isspace()‎]]</code>===
التحقق ممّا إذا كانت جميع البايتات في التسلسل الثنائي هي بايتات المسافة البيضاء في ترميز ASCII، ومن أنّ التسلسل ليس فارغًا.
===<code>[[Python/bytes/istitle|bytes.istitle()‎]]</code>===
التحقق ممّا إذا كان التسلسل الثنائي هو تسلسل ASCII بحالة titlecase، ومن أنّ التسلسل ليس فارغًا.
===<code>[[Python/bytes/isupper|bytes.isupper()‎]]</code>===
التحقق ممّا إذا كان التسلسل الثنائي يحتوي على حرف واحد كبير على الأقل بترميز ASCII، والتحقق من عدم وجود حروف صغيرة.
===<code>[[Python/bytes/lower|bytes.lower()‎]]</code>===
تحويل جميع الحروف بترميز ASCII في التسلسل الثنائي إلى حروف صغيرة.
===<code>[[Python/bytes/splitlines|bytes.splitlines()‎]]</code>===
تقسيم التسلسل الثنائي إلى <nowiki/>[[Python/list|قائمة]] من الأسطر.
===<code>[[Python/bytes/swapcase|bytes.swapcase()‎]]</code>===
قلب حالة الحروف بترميز ASCII في التسلسل الثنائي.
===<code>[[Python/bytes/title|bytes.title()‎]]</code>===
تحويل أوائل الكلمات في التسلسل الثنائي إلى أحرف كبيرة Title Case بترميز ASCII.
===<code>[[Python/bytes/upper|bytes.upper()‎]]</code>===
تحويل جميع الحروف بترميز ASCII في التسلسل الثنائي إلى حروف كبيرة.
===<code>[[Python/bytes/zfill|bytes.zfill()‎]]</code>===
إضافة العدد <code>‎b'0'‎</code> من الترميز ASCII إلى يسار التسلسل الثنائي ليصبح التسلسل بالطول المحدد من قبل المستخدم.


== مصادر ==
== انظر أيضًا ==
* صفحة [https://docs.python.org/3/library/stdtypes.html#bytes-objects Built-in Types] في توثيق بايثون الرسمي.
* [[Python/str|السلاسل النصية str في بايثون]].
* [https://docs.python.org/3/library/functions.html#func-bytes قسم الدالة bytes في صفحة Functions في توثيق Python الرسمي].
* [[Python/bytearray|مصفوفات البايتات bytearray في بايثون]].


==مصادر==
*صفحة [https://docs.python.org/3/library/stdtypes.html#bytes-objects Built-in Types] في توثيق بايثون الرسمي.
*[https://docs.python.org/3/library/functions.html#func-bytes قسم الدالة bytes في صفحة Functions في توثيق Python الرسمي].
[[تصنيف:Python]]
[[تصنيف:Python]]
[[تصنيف:Python Types]]
[[تصنيف:Python Types]]
[[تصنيف:Python Function]]
[[تصنيف:Python Bytes]]
[[تصنيف:Python Built-in Functions]]

المراجعة الحالية بتاريخ 10:51، 9 يونيو 2018

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

تعريف البايتات

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

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

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

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

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

البايتات هي الكائن المُقابل غير القابل للتّغيير (immutable) لمصفوفات البايتات القابلة للتّغيير، وللبايتات نفس التّوابع والعمليّات (التي لا يُمكن لها أن تُغيّر من الكائن) التي تملكها مصفوفات البايتات.

الدالة bytes()‎

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

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

طريقة استعمال المُعاملات مع الدالة bytes()‎ هي نفسها طريقة استعمال مُعاملات الدّالة bytearray()‎.

الدوال التابعة للكائن bytes

bytes.fromhex()‎

فك ترميز سلسلة نصية تتضمن أعداد ست عشرية إلى كائن bytes.

bytes.hex()‎

ترميز كائن bytes إلى سلسلة نصية تتضمن عددين ستّ عشريين مقابل كلّ بايت.

bytes.count()‎

إعادة عدد مرات ظهور تسلسل فرعي ضمن كائن bytes.

bytes.decode()‎

فك ترميز البايتات الممرّرة إليها إلى سلسلة نصية.

bytes.endswith()‎

التحقق من وجود تسلسل فرعي في نهاية البيانات الثنائية الأصلية.

bytes.find()‎

إعادة أدنى قيمة للفهرس والذي يكون التسلسل الفرعي موجودًا في ضمن البيانات الثنائية.

bytes.index()‎

يؤدي هذا التابع نفس وظيفة التابع bytes.find()‎ ولكنّه يطلق الخطأ ValueError إن لم يعثر على التسلسل الفرعي.

bytes.join()‎

إعادة كائن البياتات أو كائن مصفوفة البايتات الناتج عن ربط البيانات الثنائية التابعة لكائن قابل للتكرار (iterable).

bytes.maketrans()‎

يعيد هذا التابع الساكن جدول تحويل (translation table) يمكن استخدامه بواسطة التابع bytes.translate()‎.

bytes.partition()‎

تقسيم التسلسل عند أول ظهور للقيمة التي يحدّدها المستخدم.

bytes.replace()‎

تبديل العبارة التي يختارها المستخدم - مهما تكرّرت في تسلسل البيانات الثنائية - إلى القيمة الجديدة التي يحدّدها.

bytes.rfind()‎

إعادة أعلى قيمة للفهرس في التسلسل الأصلي حيث تجد فيه التسلسل الفرعي.

bytes.rindex()‎

يشبه التابع bytes.rfind()‎ في أنّه يحدّد أعلى قيمة للفهرس تجد فيه التسلسل الفرعي ضمن التسلسل الأصلي، ويختلف عنه في أنّه يطلق الخطأ ValueError إن لم يعثر على التسلسل الفرعي.

bytes.rpartition()‎

تقسيم البيانات الثنائية عند آخر ظهور للقيمة التي يحدّدها المستخدم.

bytes.startswith()‎

التحقق من أنّ البيانات الثنائية تبدأ بالقيمة التي يحدّدها المستخدم.

bytes.translate()‎

إعادة تسلسل البيانات الثنائية بعد إجراء عمليات الربط والحذف بالاعتماد على جدول التحويل الذي ينشئه التابع bytes.maketrans()‎.

ملاحظة: تفترض التوابع التالية استخدام بيانات ثنائية متوافقة مع الترميز ASCII ولكن يمكن استخدامها مع أي نوع من البيانات الثنائية عن طريق تمرير المعاملات المناسبة.

bytes.center()‎

إعادة البيانات الثنائية مزاحة نحو الوسط ضمن تسلسل يحمل طولًا يحدّده المستخدم.

bytes.ljust()‎

إعادة نسخة من البيانات الثنائية مزاحة نحو اليسار ضمن تسلسل ذي طول محدّد.

bytes.lstrip()‎

حذف البايتات المحدّدة من بداية التسلسل.

bytes.rjust()‎

إعادة نسخة من البيانات الثنائية مزاحة نحو اليمين ضمن تسلسل ذي طول محدّد.

bytes.rsplit()‎

تقسيم التسلسل الثنائي إلى تسلسلات فرعية من النوع ذاته بالاعتماد على تسلسل ثنائي يحدّد الفاصل.

bytes.rstrip()‎

حذف البايتات المحدّدة من نهاية التسلسل.

bytes.split()‎

تقسيم التسلسل الثنائي إلى قائمة من تسلسلات ثنائية فرعية من النوع ذاته، بالاعتماد على فاصل محدّد.

bytes.strip()‎

حذف البايتات المحدّدة من قبل المستخدم من نهاية وبداية التسلسل.

ملاحظة: تفترض التوابع التالية استخدام بيانات ثنائية متوافقة مع الترميز ASCII ولا يمكن استخدامها مع الأنواع الأخرى من البيانات الثنائية.

bytes.capitalize()‎

تفسير البيانات الثنائية كحروف في ترميز ASCII وتحوّل الحرف الأول إلى حرف كبير، والحروف الأخرى إلى حروف صغيرة.

bytes.expandtabs()‎

تحويل جميع علامات الجدولة في ترميز ASCII إلى مسافة بيضاء واحدة أو أكثر في الترميز ذاته.

bytes.isalnum()‎

التحقق ممّا إذا كانت جميع البايتات في التسلسل الثنائي حروفًا أو أرقامًا عشرية في ترميز ASCII، ومن أنّ التسلسل ليس فارغًا.

bytes.isalpha()‎

التحقق ممّا إذا كان تسلسل البيانات الثنائية يحتوي على الحروف بترميز ASCII فقط، وأنّ التسلسل ليس فارغًا.

bytes.isdigit()‎

التحقق ممّا إذا كان التسلسل الثنائي مكوّنًا من الأعداد العشرية بترميز ASCII فقط، وأنّ التسلسل ليس فارغًا.

bytes.islower()‎

التحقق ممّا إذا كان التسلسل الثنائي يحتوي على حرف واحد صغير على الأقل بترميز ASCII، والتحقق من عدم وجود حروف كبيرة.

bytes.isspace()‎

التحقق ممّا إذا كانت جميع البايتات في التسلسل الثنائي هي بايتات المسافة البيضاء في ترميز ASCII، ومن أنّ التسلسل ليس فارغًا.

bytes.istitle()‎

التحقق ممّا إذا كان التسلسل الثنائي هو تسلسل ASCII بحالة titlecase، ومن أنّ التسلسل ليس فارغًا.

bytes.isupper()‎

التحقق ممّا إذا كان التسلسل الثنائي يحتوي على حرف واحد كبير على الأقل بترميز ASCII، والتحقق من عدم وجود حروف صغيرة.

bytes.lower()‎

تحويل جميع الحروف بترميز ASCII في التسلسل الثنائي إلى حروف صغيرة.

bytes.splitlines()‎

تقسيم التسلسل الثنائي إلى قائمة من الأسطر.

bytes.swapcase()‎

قلب حالة الحروف بترميز ASCII في التسلسل الثنائي.

bytes.title()‎

تحويل أوائل الكلمات في التسلسل الثنائي إلى أحرف كبيرة Title Case بترميز ASCII.

bytes.upper()‎

تحويل جميع الحروف بترميز ASCII في التسلسل الثنائي إلى حروف كبيرة.

bytes.zfill()‎

إضافة العدد ‎b'0'‎ من الترميز ASCII إلى يسار التسلسل الثنائي ليصبح التسلسل بالطول المحدد من قبل المستخدم.

انظر أيضًا

مصادر