English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل تعليمات Python الأساسية

تحكم في تدفق Python

الوظائف في Python

أنواع البيانات في Python

عمليات تحميل ملفات Python

أوبجكتات وكلات Python

تاريخ وتوقيت Python

معرفة متقدمة في Python

دليل Python

كلمة الأساسية Global في Python

قبل قراءة هذا المقال، تأكد من أنك قد مارستمتغيرات Python العالمية والمحلية والغير محليةبعض المعارف الأساسية.

مقدمة في الكلمة المفتاحية العالمية

في Python، الكلمة المفتاحية global تسمح لك بتعديل المتغيرات خارج نطاق النطاق الحالي. تستخدم لإنشاء متغيرات عالمية وتغييرها في سياق محلي.

قواعد كلمة global الأساسية هي:

قواعد كلمة global الأساسية في Python هي:

  • عندما نخلق المتغير داخل الدالة، هو محلي افتراضيًا.

  • عندما نحدد المتغير في الخارج، هو عالمي افتراضيًا. لا تحتاج إلى استخدام كلمة global.

  • نستخدم كلمة global للقراءة والكتابة على المتغيرات العالمية داخل الدالة.

  • استخدام كلمة global خارج الدالة غير صالح

استخدام الكلمة العامة (مثال)

لنأخذ مثالًا.

مثال 1: الوصول إلى المتغير العالمي من داخل الدالة

c = 1  # متغير عالمي
def add():
    print(c)
add()

عندما نن�行 البرنامج السابق، الناتج سيكون:

1

لكن، في بعض الحالات، نحتاج إلى تعديل المتغيرات العالمية من داخل الدالة.

مثال 2: تعديل المتغير العالمي من داخل الدالة

c = 1  # متغير عالمي
    
def add():
    c = c + 2  # زيادة c بـ 2
    print(c)
add()

عندما نن�行 البرنامج السابق، سيظهر الناتج خطأ:

UnboundLocalError: local variable 'c' referenced before assignment

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

الحل هو استخدام كلمة global.

مثال 3: استخدام كلمة 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

في Python، نخلق وحدة config.py لتخزين المتغيرات العالمية، ونشارك المعلومات بين وحدات Python في نفس البرنامج.

هذا كيف يمكننا مشاركة المتغيرات العالمية بين وحدات Python.

مثال 4: مشاركة المتغيرات العالمية عبر وحدات 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 في نفس الوقت. ثم نقوم بطباعة وتجربة قيمة المتغيرات العالمية، سواء تم تغييرها أم لا.

متغيرات عالمية في الدوال المحكمة

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

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

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()。