سلام عليكم
في o-pascal كنت أكتب هذا الكود لتغيير قيمة متغير
procedure x(var a:integer);begina=power(a,2);end
لنفرض أن لدينا المتغير y الذي اخذ القيمة 100 مسبقا
إذا طبقنا الإجراء x هكذا
x(y);
ستصير قيمة y هي 10000
كيف يحدث ذلك في البايثون
سلام عليكم
في o-pascal كنت أكتب هذا الكود لتغيير قيمة متغير
procedure x(var a:integer);begina=power(a,2);end
لنفرض أن لدينا المتغير y الذي اخذ القيمة 100 مسبقا
إذا طبقنا الإجراء x هكذا
x(y);
ستصير قيمة y هي 10000
كيف يحدث ذلك في البايثون
تم تعديل هذه المشاركة بواسطة أحمد أبو عبد البر في 18 فبراير 2013 في 17:11
إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة
فما أحوجني إلى دعوة صالحة من أخ لي كريم
أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز
يبدو أن هناك مشكلة مع لصق الأكواد...
الحل أن تعرف المتغير a كمتغير عام وتقوم بتعديله داخل الدالة
*لتعلم الدالة ان a هو متغير عام ... قم بإستخدام جملة global
**من الأفضل البحث عن طريقة أخرى للحل مثل إعادة الإسناد
>>> a=3 >>> def x(): ... global a ... a = a**2 ... return ... >>> x() >>> a 9
تم تعديل هذه المشاركة بواسطة ahmed_youssef في 18 فبراير 2013 في 17:35
(map share people)
فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader
شكرا أحمد
هذا سينفع إذا كان المتغير العام هو نفسه الذي في داخل الدالة
ولكن لنفرض أن لدينا عدة متغيرات a,b,c,d ونريد أن نغيرها بواسطة الدالة x مثل نفعل في O-pascal
x(a);x(b);x(c);x(d);//قيم المتغيرات ستتغر
ارجو أن قد فهمت قصدي
نحن نسمي هذا The call by reference
تم تعديل هذه المشاركة بواسطة أحمد أبو عبد البر في 18 فبراير 2013 في 17:38
إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة
فما أحوجني إلى دعوة صالحة من أخ لي كريم
أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز
الأمور لاتعمل في بايثون بهذه الطريقة، لهذا قلت لك أنظر لحل آخر للمشكلة عن طريق إعادة الإسناد
* http://en.wikipedia.org/wiki/Call_by_sharing#Call_by_sharing
>>> def inc(val): ... return val + 1 ... >>> x=1 >>> y=15 >>> new_x = inc(x) >>> new_x 2 >>> new_y = inc(y) >>> new_y 16
(map share people)
فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader
هذا الموضوع مغلق.