بايثون3 مِن مدارس w3-23Python Lambda
اقتبس من ابراهيم حمادة في 10 أبريل، 2021, 8:57 متنويه:
لِأن التاب لا تظهر على الصفحة, و هي شيء مهم جدا في الإزاحة في كود بايثون
لذلك فإننا سنستبدل التاب بالكلمة 'tab' على هذه الصفحة
و مِن الأفضل إذا شئت أن تنسخ أي كود, أن تأخذه مِن الملف النصي, أو الملفات المُرفقة.
دالةْ Lambda في بيثوندالة لامداْ(lambda) هي دالة صغيرة غير عادية.
يمكن أن تأخذ دالة lambda أي عدد من الوسائط ، ولكن لا يمكن أن تحتوي إلا على تعبير واحد فقط.طريقةْ بناء دالةْ lambda
lambda arguments : expression
يعني في البداية نكتب كلمةْ lambda ثُمَّ الوسائط ثُمَّ علامةْ : ثُمَّ التعبير الذي سيتم تنفيذه.
يتم تنفيذ التعبير و يتم إرجاع النتيجة:
مثال
إضافةْ 10 إلى الوسيطة a، و إرجاع النتيجة:
x = lambda a : a + 10
#لقد أسندنا الدالة lambda إلى المتغير x, فصار x يقوم مقامها.
print(x(5))ستكون النتيجة:
15
جربها بنفسك مِن ملف lambda.pyيمكن أن تأخذ دوال Lambda أي عدد من الوسائط:
مثال
ضرب الوسيطة a مع الوسيطة b وإرجاع النتيجة:
x = lambda a, b : a * b
print(x(5, 6))ستكون النتيجة:
30
جربها بنفسك مِن ملف lambda2.pyمثال
جمع الوسيطة a و b و c وإرجاع النتيجة:
x = lambda a, b, c : a + b + c
print(x(5, 6, 2))ستكون النتيجة:
13
جربها بنفسك مِن ملف lambda3.pyلماذا تُستخدم وظائف Lambda؟
يتم إظهار قوةْ لامدا بشكل أفضل عند استخدامها كدالة مجهولة داخل دالة أخرى.
لنفترض أن لديك دالة تأخذ وسيطة واحدة ، وسيتم ضرب هذه الوسيطة برقم غير معروف:
def myfunc(n):
tab return lambda a : a * n
استخدم الدالة هذه لإنشاء دالة تضاعف دائما الرقم الذي تُدخلُه:
مثال
def myfunc(n):
tab return lambda a : a * nmydoubler = myfunc(2)
# الآن mydoubler يُعبر عن الدالة lambda, و n فيها يساوي 2
print(mydoubler(11))ستكون النتيجة:
22
جربها بنفسك مِن ملف lambda_double.pyأو ، استخدم نفس تعريف الوظيفة لإنشاء وظيفة تضاعف دائما الرقم الذي تُدخلُه ثلاث مرات:
مثال
def myfunc(n):
tab return lambda a : a * nmytripler = myfunc(3)
print(mytripler(11))
ستكون النتيجة:
33
جربها بنفسك مِن ملف lambda_triple.pyأو ، استخدم نفس تعريف الوظيفة لجعل كلتا الوظيفتين ، في نفس البرنامج:
مثال
def myfunc(n):
tab return lambda a : a * nmydoubler = myfunc(2)
mytripler = myfunc(3)print(mydoubler(11))
print(mytripler(11))ستكون النتيجة:
22
33
جربها بنفسك مِن ملف lambda_both.pyاستخدم وظائف lambda عند الحاجة إلى وظيفة صغيرة و مُساعِدة لفترة قصيرة من الوقت.
اختبر نفسك مع التمارين
التمرين:
قم بإنشاء دالة lambda تأخذ معامِل واحد (a) وترجعه.
x = ...الإجابة :
x= lambda a: aالدرس مع الملفات المُرفقة:
https://www.dropbox.com/s/g7j97q4e8l1zjoz/23Python%20Lambda.zip?dl=1
تنويه:
لِأن التاب لا تظهر على الصفحة, و هي شيء مهم جدا في الإزاحة في كود بايثون
لذلك فإننا سنستبدل التاب بالكلمة 'tab' على هذه الصفحة
و مِن الأفضل إذا شئت أن تنسخ أي كود, أن تأخذه مِن الملف النصي, أو الملفات المُرفقة.
دالةْ Lambda في بيثون
دالة لامداْ(lambda) هي دالة صغيرة غير عادية.
يمكن أن تأخذ دالة lambda أي عدد من الوسائط ، ولكن لا يمكن أن تحتوي إلا على تعبير واحد فقط.
طريقةْ بناء دالةْ lambda
lambda arguments : expression
يعني في البداية نكتب كلمةْ lambda ثُمَّ الوسائط ثُمَّ علامةْ : ثُمَّ التعبير الذي سيتم تنفيذه.
يتم تنفيذ التعبير و يتم إرجاع النتيجة:
مثال
إضافةْ 10 إلى الوسيطة a، و إرجاع النتيجة:
x = lambda a : a + 10
#لقد أسندنا الدالة lambda إلى المتغير x, فصار x يقوم مقامها.
print(x(5))
ستكون النتيجة:
15
جربها بنفسك مِن ملف lambda.py
يمكن أن تأخذ دوال Lambda أي عدد من الوسائط:
مثال
ضرب الوسيطة a مع الوسيطة b وإرجاع النتيجة:
x = lambda a, b : a * b
print(x(5, 6))
ستكون النتيجة:
30
جربها بنفسك مِن ملف lambda2.py
مثال
جمع الوسيطة a و b و c وإرجاع النتيجة:
x = lambda a, b, c : a + b + c
print(x(5, 6, 2))
ستكون النتيجة:
13
جربها بنفسك مِن ملف lambda3.py
لماذا تُستخدم وظائف Lambda؟
يتم إظهار قوةْ لامدا بشكل أفضل عند استخدامها كدالة مجهولة داخل دالة أخرى.
لنفترض أن لديك دالة تأخذ وسيطة واحدة ، وسيتم ضرب هذه الوسيطة برقم غير معروف:
def myfunc(n):
tab return lambda a : a * n
استخدم الدالة هذه لإنشاء دالة تضاعف دائما الرقم الذي تُدخلُه:
مثال
def myfunc(n):
tab return lambda a : a * n
mydoubler = myfunc(2)
# الآن mydoubler يُعبر عن الدالة lambda, و n فيها يساوي 2
print(mydoubler(11))
ستكون النتيجة:
22
جربها بنفسك مِن ملف lambda_double.py
أو ، استخدم نفس تعريف الوظيفة لإنشاء وظيفة تضاعف دائما الرقم الذي تُدخلُه ثلاث مرات:
مثال
def myfunc(n):
tab return lambda a : a * n
mytripler = myfunc(3)
print(mytripler(11))
ستكون النتيجة:
33
جربها بنفسك مِن ملف lambda_triple.py
أو ، استخدم نفس تعريف الوظيفة لجعل كلتا الوظيفتين ، في نفس البرنامج:
مثال
def myfunc(n):
tab return lambda a : a * n
mydoubler = myfunc(2)
mytripler = myfunc(3)
print(mydoubler(11))
print(mytripler(11))
ستكون النتيجة:
22
33
جربها بنفسك مِن ملف lambda_both.py
استخدم وظائف lambda عند الحاجة إلى وظيفة صغيرة و مُساعِدة لفترة قصيرة من الوقت.
اختبر نفسك مع التمارين
التمرين:
قم بإنشاء دالة lambda تأخذ معامِل واحد (a) وترجعه.
x = ...
الإجابة :
x= lambda a: a
الدرس مع الملفات المُرفقة:
https://www.dropbox.com/s/g7j97q4e8l1zjoz/23Python%20Lambda.zip?dl=1