اذهب إلى المحتوى

السؤال

نشر

أريد أن أقوم بتعديل متغير عام global من داخل دالة لكني أحصل على الخطأ التالي:

x = 5

def printX():
  x = 6
  print(x)	# 6

printX()

# المشكلة هنا يتم طباعة 5
print(x)	# 5

لكن كما هو ظاهر أن الكود لا يقوم بتعديل المتغير x  ولكن يقوم بعمل متغير آخر داخل الدالة local variable ، كيف أقوم بتعديل هذا المتغير من داخل الدالة لتكون نتيجة الطباعة تساوي 6 في كلتا الحالتين؟

Recommended Posts

  • 1
نشر

عندما قمت بإعادة تعيين المتغير x من داخل الوظيفة فانت قمت بإعادة تعيين متغير محلي x نسخة من المتغير الأصلي

ومن ثم قمت بطباعة المتغير المحلي المعدل وليس الرئيسي

أما إذا أردت الوصول الى المتغير الأصلي وتعديله فيجب عليك كتابة الكلمة global واسم المتغير داخل الوظيفة مثل

x = 5
def printX():
    global x

ومن ثم يمكنك التعديل على المتغير الأصلي كما هو موضح في الكود

x = 5

def printX():
    global x	# يجب كتابة هذه الكلمة للوصول للمتغير 
    x = 6
    print(x)	

printX()


print(x)

 

  • 0
نشر

المتغيرات التي يتم تعريفها بداخل الدوال, يقال لها Local Variables أو متحولات محلية و هذه التسمية تعني أنه لا يمكن الوصول لها من خارج الدالة بشكل مباشر.
المتغيرات التي يتم تعريفها خارج الدوال, يقال لها Global Variables أو متحولات عامة و هذه التسمية تعني أنه يمكن الوصول لها من أي مكان في الكود حتى من داخل التوابع functions، لكن في حال قمتي بتعديل قيمة المتغير العام من داخل تابع أو كلاس فإن التغيير يكون محصور ضمن التابع أو الكلاس الذي حدث فيه التعديل( لأنه تم إنشاء نسخة من المتحول داخل الدالة أو الكلاس)، لذا إذا أردت جعل التعديل يؤثر في المتحول الأساسي يجب أن تضعي global كما في الصورة...

2021-05-24_20h35_54.png

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...