أساسيات NamedTuple
أنشئ سجلات خفيفة وغير قابلة للتغيير
أساسيات NamedTuple درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.
ما هو NamedTuple؟
إن named tuple صفّ تكون لمواضعه أسماء أيضًا. وتحصلون معه على الطبيعة خفيفة الوزن وغير القابلة للتغيير للصف، إلى جانب الوصول المقروء إلى السمات. وهو مثالي للسجلات الصغيرة.
مشكلة الصفوف العادية
الصفوف العادية موضعية، لذا يجب أن تتذكروا معنى كل فهرس. ومن السهل أن تخطئوا في تعليمات برمجية مثل p[0] وp[1].
point = (1, 2)
print(point[0]) # x?
print(point[1]) # y?الإنشاء باستخدام namedtuple
تنشئ الدالة المصنّعة collections.namedtuple فئة فرعية جديدة من الصفوف. مرّروا إليها اسم النوع وأسماء الحقول.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p)الوصول حسب الاسم
يمكنكم الآن قراءة الحقول حسب الاسم بدلًا من الفهرس، مما يجعل التعليمات البرمجية واضحة بذاتها.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p.x)
print(p.y)لا يزال صفًا
يظل named tuple صفًا حقيقيًا، لذا يظل الفهرس وفك الحزم والتكرار تعمل كالمعتاد.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p[0])
x, y = p
print(x, y)عدم القابلية للتغيير
مثل جميع الصفوف، لا يمكن تغيير named tuples. وتؤدي محاولة إسناد قيمة إلى حقل إلى إطلاق AttributeError.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
try:
p.x = 99
except AttributeError as e:
print('Cannot modify:', e)إنشاء نسخة معدّلة
بما أنه لا يمكنكم تغييره، استخدموا الأسلوب _replace() لإنشاء مثيل جديد مع تغيير بعض الحقول.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
q = p._replace(y=99)
print(p)
print(q)التحويل إلى قاموس
يعيد الأسلوب _asdict() الحقول في صورة قاموس، وهو مفيد للتحويل إلى صيغة تسلسلية أو للتسجيل.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p._asdict())فحص الحقول
تسرد السمة _fields أسماء الحقول. وهي مفيدة للتعليمات البرمجية العامة التي تكرر على حقول سجل.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
print(Point._fields)القيم الافتراضية
وفّروا القيم الافتراضية باستخدام المعامل defaults. وتنطبق القيم الافتراضية على الحقول الموجودة في أقصى اليمين، تمامًا مثل القيم الافتراضية لمعاملات الدوال.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y', 'z'], defaults=[0])
print(Point(1, 2))
print(Point(1, 2, 9))إرجاع قيم متعددة
تتألق named tuples عند استخدامها كقيم مُعادة من الدوال. فبدلًا من إرجاع صف مجهول، أعيدوا صفًا مسمّى كي يقرأ المستدعي الحقول حسب أسمائها.
from collections import namedtuple
Stats = namedtuple('Stats', ['minimum', 'maximum'])
def analyze(nums):
return Stats(min(nums), max(nums))
r = analyze([3, 1, 9, 4])
print(r.minimum, r.maximum)اختبار سريع
كيف تنشئون نسخة معدّلة من مثيل named tuple؟
مراجعة
تعلّمتم إنشاء سجلات خفيفة الوزن وغير قابلة للتغيير.
- تضيف
namedtupleأسماء الحقول إلى الصفوف. - يمكنكم الوصول إلى الحقول حسب الاسم أو الفهرس، ولا يزال فك الحزم يعمل.
- استخدموا
_replace()لإنشاء نسخ معدّلة و_asdict()للتحويل. - تسرد
_fieldsالأسماء، بينما تضبطdefaultsالقيم الافتراضية.
الأسئلة الشائعة
هل درس «أساسيات NamedTuple» مجاني؟
نعم — نص درس «أساسيات NamedTuple» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.
ماذا ستتعلم في «أساسيات NamedTuple»؟
أنشئ سجلات خفيفة وغير قابلة للتغيير تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟
لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «أساسيات NamedTuple»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟
نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- فئة Enum
- IntEnum وFlag
- أساسيات NamedTuple
- typing.NamedTuple