القائمة الرئيسية

الصفحات

دورة البرمجة بلغة بايثون - الدرس التاسع عشر (متغيرات بايثون العامة والمحلية وغير المحلية)

دورة البرمجة بلغة بايثون - الدرس التاسع عشر (متغيرات بايثون العامة والمحلية وغير المحلية)

 دورة البرمجة بلغة بايثون - الدرس التاسع عشر (متغيرات بايثون العامة والمحلية وغير المحلية)

في هذا البرنامج التعليمي ، ستتعرف على متغيرات بايثون العامة والمتغيرات المحلية والمتغيرات غير المحلية ومكان استخدامها.


المتغيرات العامة

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


دعونا نرى مثالاً عن كيفية إنشاء متغير عام في بايثون.

x = "global"

def foo():
    print("x inside:", x)


foo()
print("x outside:", x)

الناتج:

x inside: global
x outside: global

في الكود أعلاه ، أنشأنا x كمتغير عام وحددنا دالة foo لطباعة المتغير العام x. أخيرًا ، استدعينا دالة foo والذي سيطبع قيمة x.


ماذا لو كنت تريد تغيير قيمة x داخل دالة؟

x = "global"

def foo():
    x = x * 2
    print(x)

foo()

الناتج

UnboundLocalError: local variable 'x' referenced before assignment

يُظهر الناتج خطأً لأن بايثون يعامل x كمتغير محلي ولم يتم تعريف x أيضًا داخل دالة foo.


لإنجاح العملية ، نستخدم الكلمة الأساسية global.


المتغيرات المحلية

يُعرف المتغير المعلن داخل جسم الوظيفة أو في النطاق المحلي باسم المتغير المحلي.


مثال2: الوصول إلى المتغير المحلي خارج النطاق

def foo():
    y = "local"


foo()
print(y)


الناتج

NameError: name 'y' is not defined


يُظهر الناتج خطأً لأننا نحاول الوصول إلى متغير محلي y في نطاق عام بينما المتغير المحلي يعمل فقط داخل دالة foo أو النطاق المحلي.


دعونا نرى مثالاً عن كيفية إنشاء متغير محلي في بايثون.


مثال 3: إنشاء متغير محلي

عادة ، نعلن عن متغير داخل الدالة لإنشاء متغير محلي.

def foo():
    y = "local"
    print(y)

foo()


الناتج

local

دعنا نلقي نظرة على المشكلة السابقة حيث كان x متغيرًا عامًا وأردنا تعديل x داخل دالة foo.


المتغيرات العامة والمحلية

هنا ، سوف نوضح كيفية استخدام المتغيرات العامة والمتغيرات المحلية في نفس الكود.


مثال 4: استخدام المتغيرات العمومية والمحلية في نفس الكود

x = "global "

def foo():
    global x
    y = "local"
    x = x * 2
    print(x)
    print(y)

foo()


الناتج

global global 
local

في الكود أعلاه ، اعلنا أن x متغير عام و y متغير محلي في دالة foo. ثم نستخدم عامل الضرب * لتعديل المتغير العام x ونطبع كل من x و y.


بعد استدعاء foo ، تصبح قيمة x عامة لأننا استخدمنا x * 2 للطباعة مرتين. بعد ذلك ، نطبع قيمة المتغير المحلي y.


مثال 5: المتغير العام والمتغير المحلي بنفس الاسم

x = 5

def foo():
    x = 10
    print("local x:", x)


foo()
print("global x:", x)


الناتج

local x: 10
global x: 5

في الكود أعلاه ، استخدمنا نفس الاسم x لكل من المتغير العام والمتغير المحلي. نحصل على نتيجة مختلفة عندما نطبع نفس المتغير لأن المتغير مُعلَن في كلا النطاقين ، أي النطاق المحلي داخل foo  والنطاق العام خارج foo.


عندما نطبع المتغير داخل foo فإنه يخرج x المحلي: 10. يسمى هذا النطاق المحلي للمتغير.


وبالمثل ، عندما نطبع المتغير خارج foo ، فإنه يخرج Global x: 5. وهذا ما يسمى النطاق العام للمتغير.


المتغيرات غير المحلية

تُستخدم المتغيرات غير المحلية في الوظائف المتداخلة التي لم يتم تحديد نطاقها المحلي. هذا يعني أن المتغير لا يمكن أن يكون في النطاق المحلي أو العام.


دعونا نرى مثالاً عن كيفية إنشاء متغير عام في بايثون.


نستخدم كلمات رئيسية nonlocal لإنشاء متغيرات غير محلية.


مثال 6: إنشاء متغير غير محلي

def outer():
    x = "local"

    def inner():
        nonlocal x
        x = "nonlocal"
        print("inner:", x)

    inner()
    print("outer:", x)


outer()

الناتج

inner: nonlocal
outer: nonlocal

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


ملاحظة: إذا قمنا بتغيير قيمة متغير غير محلي ، فستظهر التغييرات في المتغير المحلي.




reaction:
Ahmed Taher
Ahmed Taher
مدون من العراق . احب البرمجة وكل ما يتعلق بالشبكات والسيرفرات وامن المعلومات . واسعى الى توفير جميع المصادر والمواد للامتحانات الدولية.

تعليقات