؛

التنقل في المنتدى
تحتاج لتسجيل الدخول لإنشاء مشاركات أو مواضيع.

بايثون3 مِن مدارس w3-28Python Scope

تنويه:
لِأن التاب لا تظهر على الصفحة, و هي شيء مهم جدا في الإزاحة في كود بايثون
لذلك فإننا سنستبدل التاب بالكلمة 'tab' على هذه الصفحة
و مِن الأفضل إذا شئت أن تنسخ أي كود, أن تأخذه مِن الملف النصي, أو الملفات المُرفقة.
النطاق في بايثون

المتغير متاح فقط من داخل المنطقة التي تم إنشاؤه فيها. هذا ما يسمى بالنطاق (scope).

النطاق المحلي(Local Scope)
ينتمي المتغير الذي تم إنشاؤه داخل دالة إلى النطاق المحلي لتلك الوظيفة ، ولا يمكن استخدامه إلا داخل هذه الوظيفة.
مثال
المتغير الذي تم إنشاؤه داخل دالة يبقى متوفرا و متاحا داخل تلك الوظيفة:
def myfunc():
tab x = 300
tab print(x)

myfunc()

ستكون النتيجة:
300
جربها بنفسك مِن ملف scope1.py

وظيفة داخل الوظيفة
كما هو موضح في المثال أعلاه ، المتغير xغير متاح خارج الوظيفة ، ولكنه متاح لأي دالة يمكن أن تكون موجودة داخل الوظيفة:
مثال
يمكن الوصول إلى المتغير المحلي من خلال دالة داخل الوظيفة:
def myfunc():
tab x = 300
tab def myinnerfunc():
tab tab print(x)
tab myinnerfunc()

myfunc()

ستكون النتيجة:
300
جربها بنفسك مِن ملف scope2.py

النطاق العام(Global Scope)
المتغير الذي يتم إنشاؤه في الجزء الرئيسي من كود Python هو متغير عمومي وينتمي إلى النطاق العام.
المتغيرات العامة تبقى متاحة من داخل أي نطاق ، عام أو محلي.
مثال
المتغير الذي يتم إنشاؤه خارج الدالة يكون عامًا ويمكن لأي أحد استخدامه, يعني مِن أي مكان:
x = 300

def myfunc():
tab print(x)

myfunc()

print(x)

ستكون النتيجة:
300
300
جربها بنفسك مِن ملف scope3.py

تسمية المتغيرات
إذا كنتَ تعمل بنفس اسم المتغير داخل وخارج الدالة ، فسيتعامل معهما Python كمتغيرين منفصلين ، أحدهما متاح في النطاق العام (خارج الوظيفة) والآخر متاح في النطاق المحلي (داخل الوظيفة):
مثال
ستقوم الوظيفة بطباعة المتغير x المحلي ، ثم يقوم السكربت الرئيسي بطباعة المتغير x العام :
x = 300

def myfunc():
tab x = 200
tab print(x)

myfunc()

print(x)

ستكون النتيجة:
200
300
جربها بنفسك مِن ملف scope4.py

الكلمة الرئيسية global
إذا كنت بحاجة إلى إنشاء متغير عام ، ولكنك موجود أو عالق في النطاق المحلي ، يمكنك استخدام الكلمة الرئيسية global.
الكلمة الرئيسية global تجعل المتغير متغيرا عاما.
مثال
إذا كنت تستخدم الكلمة الأساسية global ، فإن المتغير ينتمي إلى النطاق العام:
def myfunc():
tab global x
tab x = 300

myfunc()

print(x)

ستكون النتيجة:
300
جربها بنفسك مِن ملف scope5.py

أيضًا ، استخدم الكلمة الأساسية global إذا كنت تريد إجراء تغيير على متغير عام و أنت داخل دالة.
مثال
لتغيير قيمة متغير عام مِن داخل دالة ، أشر إلى المتغير باستخدام الكلمة الأساسية global:
x = 300

def myfunc():
tab global x
tab x = 200

myfunc()

print(x)

ستكون النتيجة:
200
جربها بنفسك مِن ملف scope6.py

الدرس مع الملفات المُرفقة:
https://www.dropbox.com/s/vobu6nlltsme9u0/28Python%20Scope.zip?dl=1

Skip to content