Maram Jouriah نشر 16 أبريل 2021 أرسل تقرير نشر 16 أبريل 2021 لدي الكود الآتي: def fun(): x=x*3 return(y) x=1 fun() اعطاني الخطأ الاتي UnboundLocalError: local variable 'x' referenced before assignment هل ممكن اعطائي فكرة عن كيفية استخدام المتغير ضمن التابع 1 اقتباس
0 Wael Aljamal نشر 17 أبريل 2021 أرسل تقرير نشر 17 أبريل 2021 الخطأ لديك بسبب المتغير X الموجود على الجهة اليمنى المضروب ب 3. عندما تحاول بايثون قراءة قيمته تجده غير معرّف. يمكنك تمريره كوسيط للدالة fun: def fun(x): # x = 1 x=x*3 #=> 3*1 = 3 return(y) # y = 3 x=1 fun(x) # => fun(1) print(fun(x)) # 3 يصبح الآن y غير معرف لذلك يمكن إسناد قيمة التعبير الحسابي له: def fun(x): y=x*3 #=> y = 3*1 = 3 return(y) # y = 3 x=1 print(fun(x)) # 3 اقتباس
0 Nuhla Almasri نشر 17 أبريل 2021 أرسل تقرير نشر 17 أبريل 2021 (معدل) def fun(): x=x*3 return(y) x=1 fun() تعريف الدالة او الامر صحيح لكن انت هنا تقوم بضرب قيمة غير معرفة بقيمة 3 في هذا السطر x=x*3 فهنا x فقط مؤشر في الذاكره لا يحتوي اي قيمة و لا يمكننا استعمال المؤشرات التي لا تدل على قيمة بداخلها اثناء العمليات الحسابيه للقيلم بعمليات حسابيه يجب ان يكون هنا قيمة للمؤشر x حتى يتم عمل الحسابات المرادة ثم بعد ذلك انت تقوم بارجاع ايضا y و التي لم تقم اصلا بتعريفها باي مكان و لا اسناد اي قيمة لها فكما قال لك السيد وائل يجب انت تقوم باسناد قيمة او حتى تعريفها مؤقتا حتى يتم كتابتها بالذاكرة و من ثم استخدامها داخل برنامجك كالتالي : def fun(): y=x*3 return(y) fun() OR //--------------------------// def fun(x): return x*x fun(3) OR //---------------------------// def fun(): x=1 y= x*x return x fun() تم التعديل في 17 أبريل 2021 بواسطة Nuhla Almasri اقتباس
0 Ali Haidar Ahmad نشر 13 مارس 2022 أرسل تقرير نشر 13 مارس 2022 - المشكلة في محاولة تعديل قيمة متغير عام، ضمن دالة. أولاً يجب أن تضع في ذهنك أن هناك تصنيفين أساسيين للمتحولات variable هما: 1. المتغيرات المحلية Local Variables. 2. المتغيرات العامة Global variables. المتغيرات العامة هي تلك التي لم يتم الإعلان عنها داخل أي دالة، ويكون نطاقها عام Global، بينما المتغيرات المحلية هي تلك التي يتم الإعلان عنها داخل دالة ونطاقها يكون محصور ضمن الدالة التي عُرّفت ضمنها فقط. بمعنى آخر، يمكننا القول أن المتغيرات المحلية يمكن الوصول إليها فقط داخل الدالة التي تمت تهيئتها من خلالها بينما يمكن الوصول إلى المتغيرات العامة في جميع أنحاء البرنامج وداخل كل دالة. الآن طبقاً للتعريف أعلاه فمن المفترض أن يعمل الكود الخاص بك دون أن تظهر لك مشكلة، لأنك تقوم باستخدام متغير عام (يمكن الوصول له من أي مكان في الكود)، لكن في واقع الأمر هنا يوجد اختلاف بسيط وهو أنك تحاول تعديل قيمته وليس الوصول إليه فقط، ولحل المشكلة يجب أن نقوم باستخدام الكلمة المفتاحية global معه قبل محاولة إجراء أي تعديل على قيمته. def fun(): global x x=x*3 return(x) x=1 fun() وبذلك تكون الأمور سليمة. لمزيد من المعلومات عن المتغيرات والدوال والنطاقات يمكنك مراجعة المقالات التالية: https://wiki.hsoub.com/Python/scopes-and-namespaces اقتباس
السؤال
Maram Jouriah
لدي الكود الآتي:
اعطاني الخطأ الاتي
UnboundLocalError: local variable 'x' referenced before assignment
هل ممكن اعطائي فكرة عن كيفية استخدام المتغير ضمن التابع
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.