"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > هل التعديل المتغير من خلال تغيير المرجع ممكن في بايثون؟

هل التعديل المتغير من خلال تغيير المرجع ممكن في بايثون؟

تم النشر بتاريخ 2024-11-08
تصفح:715

Is Variable Modification through Reference Alteration Possible in Python?

تغيير المتغير الأصلي عن طريق تعديل مرجعه في بايثون

في البرمجة، القدرة على تعديل متغير عن طريق تغيير مرجعه يمكن أن تكون مفيدة في سيناريوهات معينة. تُستخدم هذه التقنية بشكل شائع في لغات مثل C، ولكن هل هناك طريقة لتحقيق تأثير مماثل في Python؟

دعونا نتفحص مقتطف التعليمات البرمجية لفهم المشكلة:

y = 7
x = y
x = 8

هنا، يتم في البداية تعيين نفس القيمة لـ x وy (7). ومع ذلك، عندما يتم تغيير x إلى 8، يبقى y عند 7. وذلك لأن بايثون تقوم بإنشاء متغير جديد x وتعيين له قيمة y (7). عندما يتم تعديل x، يتم تعيين قيمة جديدة (8) إلى موقع متغير مختلف في الذاكرة.

السلوك المطلوب هو تغيير y في وقت واحد عندما يتم تغيير x. في لغة C، يمكن تحقيق ذلك باستخدام المراجع، والتي تعمل كأسماء مستعارة لموقع ذاكرة محدد. ومع ذلك، لا تدعم لغة Python أصلاً مراجع النمط C.

بدلاً من ذلك، يمكننا الاستفادة من قابلية التغيير والاسم المستعار في لغة Python. يشير الاسم المستعار إلى القدرة على جعل متغيرات متعددة تشير إلى نفس الكائن في الذاكرة. ومع ذلك، يختلف هذا الأسلوب عن مراجع لغة C الحقيقية ويجب استخدامه بحذر.

يمكننا إنشاء فئة مخصصة، مثل المرجع، لمحاكاة السلوك المرجعي:

class Reference:
    def __init__(self, val):
        self._value = val  # Refers to the original value without copying

    def get(self):
        return self._value

    def set(self, val):
        self._value = val

من خلال تغليف قيمة داخل كائن مرجعي، يمكن أن تشير متغيرات متعددة إلى نفس القيمة الأساسية. عندما يتم تعديل القيمة الموجودة داخل الكائن المرجعي، فإن جميع المتغيرات التي تشير إليها ستعكس التغيير.

تسمح هذه التقنية بسلوك مشابه لمراجع لغة C دون التضحية بمرونة بايثون. ومع ذلك، من المهم ملاحظة أن هذه المراجع المخصصة لا تحتوي على نفس دلالات مراجع لغة C الحقيقية.

بيان الافراج يتم استنساخ هذه المقالة في: 1729502417 إذا كان هناك أي انتهاك ، فيرجى الاتصال بـ [email protected] لحذفه.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3