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

مشكلة: إستدعاء أي دالة على نص لا تعمل في بايثون

Adam Ebrahim

السؤال

أحاول أن أقوم باستبدال جزء من نص بنص آخر، لكن يبدو أن الدالة replace لا تعمل على الإطلاق

>>> name  = "Adam"
>>> name.replace('am', 'd')
'Add'
>>> name # لا يتم تحديث name على الإطلا
'Adam'
>>>

حاولت أن أستخدم أكثر من دالة أخرى ولكن نفس الأمر لا يتم تحديث المتغير أبدا

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

Recommended Posts

  • 0

لتعديل قيمة المتغير الذي نطبق عليه الدالة يجب إسناد ناتج الدالة لنفس المتغير مثل:

name = 'Adam'
name = name.replace('am', 'd')

name => Add

لأن هذه الدوال تعيد كائن جديد ولا تعدل على المتغير الكائن الأساسي الذي تم تطبيقها عليه.

حيث أن النمط String في بايثون هو immutable غير قابل للتعديل، هذه الدوال تعيد نسخة معدلة من قيمة المتغير

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

  • 1

دالة replace. تعتبر دالة نقية pure function

والدالة النقية pure function لديها ميزتين هما

  • دائماً تحصل على نفس المُخرجات return value لنفس المُدخلات arguments
  • الدوال النقية ليس لديها آثار جانبية side effects بمعنى أنها لاتقوم بتعديل أي شيء خارج هذه الدالة

فدالة replace لم تقم بتعديل المتغير name لانه خارج الدالة ، لهذا قامت بعمل نسخة معدلة من المتغير name وقامت بإرجاع المتغير الجديد ولم تقم بتعديل المتغير الأصلي

لهذا يجب عليك تعيين المتغير name بالمتغير الجديد الراجع من دالة replace

name = 'Adam'
name = name.replace('am', 'd')

 

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...