• 0

تعديل متغير عام من داخل دالة في بايثون

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

x = 5

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

printX()

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

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

2 اشخاص أعجبوا بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 1

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

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

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

x = 5
def printX():
    global x

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

x = 5

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

printX()


print(x)

 

3 اشخاص أعجبوا بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

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

2021-05-24_20h35_54.png

2 اشخاص أعجبوا بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن