English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
قبل قراءة هذا المقال، تأكد من أنك قد مارستمتغيرات Python العالمية والمحلية والغير محليةبعض المعارف الأساسية.
في Python، الكلمة المفتاحية global تسمح لك بتعديل المتغيرات خارج نطاق النطاق الحالي. تستخدم لإنشاء متغيرات عالمية وتغييرها في سياق محلي.
قواعد كلمة global الأساسية في Python هي:
عندما نخلق المتغير داخل الدالة، هو محلي افتراضيًا.
عندما نحدد المتغير في الخارج، هو عالمي افتراضيًا. لا تحتاج إلى استخدام كلمة global.
نستخدم كلمة global للقراءة والكتابة على المتغيرات العالمية داخل الدالة.
استخدام كلمة global خارج الدالة غير صالح
لنأخذ مثالًا.
c = 1 # متغير عالمي def add(): print(c) add()
عندما نن�行 البرنامج السابق، الناتج سيكون:
1
لكن، في بعض الحالات، نحتاج إلى تعديل المتغيرات العالمية من داخل الدالة.
c = 1 # متغير عالمي def add(): c = c + 2 # زيادة c بـ 2 print(c) add()
عندما نن�行 البرنامج السابق، سيظهر الناتج خطأ:
UnboundLocalError: local variable 'c' referenced before assignment
هذا لأننا يمكننا الوصول إلى المتغيرات العالمية فقط، وليس من الممكن تعديلها من داخل الدالة.
الحل هو استخدام كلمة global.
c = 0 # متغير عالمي def add(): global c c = c + 2 # زيادة بـ 2 print("Inside add():", c) add() print("In main:", c)
عندما نن�行 البرنامج السابق، الناتج سيكون:
Inside add(): 2 In main: 2
في البرنامج السابق، قمنا بتعريف c ككلمة عامة داخل دالة add()
ثم، نزيد من قيمة المتغير c بـ 1، أي c = c + 2. بعد ذلك، نستدعي دالة add(). في النهاية، نطبع المتغير العالمي c.
كما رأينا، تغيرت المتغيرات العالمية خارج الدوال أيضًا c = 2.
في Python، نخلق وحدة config.py لتخزين المتغيرات العالمية، ونشارك المعلومات بين وحدات Python في نفس البرنامج.
هذا كيف يمكننا مشاركة المتغيرات العالمية بين وحدات Python.
إنشاء ملف config.py، لتخزين المتغيرات العالمية
a = 0 b = "empty"
إنشاء ملف update.py، لتغيير المتغيرات العالمية
import config config.a = 10 config.b = "alphabet"
إنشاء ملف main.py لتجربة تغيير القيم
import config import update print(config.a) print(config.b)
عندما نن�行 ملف main.py، ستكون النتيجة خارجة:
10 alphabet
في النص أعلاه، قمنا بإنشاء ثلاثة ملفات: config.py، update.py و main.py.
يخزن هذا الملف config.pyaوقيمة bمتغيرات عالمية. في ملف update.py، نقوم بتصدير مكتبة config.py و تعديلaوbقيمتها. كذلك، في ملف main.py، نقوم بتصدير مكتبات config.py و update.py في نفس الوقت. ثم نقوم بطباعة وتجربة قيمة المتغيرات العالمية، سواء تم تغييرها أم لا.
هذه هي طريقة استخدام متغيرات عالمية في الدوال المحكمة.
def foo(): x = 20 def bar(): global x x = 25 print("قبل استدعاء bar: ", x) print("استدعاء bar على الفور") bar() print("بعد استدعاء bar: ", x) foo() print("x في الجسم: ", x)
الإخراج هو:
قبل استدعاء bar: 20 استدعاء bar على الفور بعد استدعاء bar: 20 x في الجسم: 25
في البرنامج أعلاه، قمنا بإنشاء متغيرات عالمية في الدالة المحكمة bar(). في دالة foo()، لا يؤثر الكلمة المفتاحية global على x.
قبل وتحديداً بعد استدعاء bar، يتم تمرير قيمة المتغير x كمتغير محلي، أي x = 20. خارج دالة foo، سيستخدم متغير x القيمة المحددة في دالة bar، أي x = 25. هذا لأننا استخدمنا كلمة المفتاح global في دالة bar (نطاق التغطية المحلي) لإنشاء متغيرات عالمية.
إذا قمنا بأي تغييرات في دالة bar()، فإن هذه التغييرات ستظهر خارج نطاق التغطية المحلية، أي في foo()。