كيفية استدعاء وظيفة في Python (مثال)
⚡ ملخص ذكي
وظائف في Python هي عبارة عن كتل برمجية قابلة لإعادة الاستخدام يتم تشغيلها عند استدعائها، ويتم تعريفها باستخدام عبارة def. تقبل هذه الكتل وسائط، وتعيد قيمًا، وتعتمد على مسافة بادئة متسقة لتجميع العبارات التي تنتمي إلى كل دالة.

ما هي الوظيفة في Python?
A وظيفة في Python هو جزء من التعليمات البرمجية يُنفَّذ عند الإشارة إليه. يُستخدم لاستخدام التعليمات البرمجية في أكثر من موضع في البرنامج. ويُطلق عليه أيضًا اسم دالة أو إجراء. Python يوفر العديد من الوظائف المدمجة مثل print() و input() و compile() و exec()، ولكنه يمنحك أيضًا حرية إنشاء وظائفك الخاصة.
كيفية تحديد واستدعاء وظيفة في Python
وظيفة في Python يتم تعريفها بواسطة عبارة "def" متبوعة باسم الدالة والأقواس ( () ).
على سبيل المثال:
لنُعرّف دالةً باستخدام الأمر "def func1():" ثم نستدعيها. سيكون ناتج الدالة "أنا أتعلم" Python وظيفة".
يستدعي استدعاء الدالة func1() تعريفنا def func1(): ويطبع الأمر "أنا أتعلم" Python الوظيفة لا شيء.
هناك مجموعة من القواعد في Python البرمجة لتحديد وظيفة.
- يجب وضع أي وسائط أو معلمات إدخال داخل هذه الأقواس.
- يمكن أن تكون العبارة الأولى للدالة عبارة اختيارية - وهي سلسلة التوثيق أو سلسلة التوثيق الخاصة بالدالة.
- يبدأ الكود داخل كل دالة بنقطتين رأسيتين (:) ويجب أن يكون مفصولاً بمسافة.
- تُنهي عبارة `return (expression)` تنفيذ الدالة، مع إمكانية إرجاع قيمة إلى الدالة المُستدعية. وتُعتبر عبارة `return` بدون وسائط مُكافئة لعبارة `return None`.
أهمية المسافة البادئة (الفضاء) في Python
قبل أن نتعرف على Python الوظائف، من المهم أن نفهم قاعدة المسافة البادئة للإعلان عنها Python الوظائف، وهذه القواعد قابلة للتطبيق على عناصر أخرى من Python وكذلك، مثل تعريف الشروط أو الحلقات أو المتغيرات.
Python يتبع أسلوبًا معينًا في المسافة البادئة لتحديد الكود. Python لا تحتوي الدوال على بداية أو نهاية صريحة مثل الأقواس المعقوفة لتحديد بداية ونهاية الدالة، بل تعتمد على المسافة البادئة. لنأخذ مثالًا بسيطًا مع الأمر "print". عند كتابة دالة "print" أسفل سطر def func1(): مباشرةً، سيظهر خطأ "indentation error: expected an indented block".
الآن، عند إضافة المسافة البادئة (المسافة) أمام دالة "الطباعة"، يجب أن تتم الطباعة كما هو متوقع.
يكفي استخدام مسافة بادئة واحدة على الأقل لضمان عمل الكود بنجاح. ولكن كأفضل ممارسة، يُنصح بترك مسافة بادئة تتراوح بين 3 و4 مسافات لاستدعاء الدالة.
من الضروري أيضًا، عند تحديد المسافة البادئة، الحفاظ على نفس المسافة البادئة لبقية الكود. على سبيل المثال، في لقطة الشاشة أدناه، عند استدعاء عبارة "still in func1" ولم يتم تعريفها أسفل عبارة الطباعة الأولى مباشرةً، سيظهر خطأ في المسافة البادئة: "unindent does not match any other dentation level".
الآن، عندما نطبق نفس المسافة البادئة على كلا العبارتين ونقوم بمحاذاتهما على نفس السطر، فإنه يعطي الناتج المتوقع.
كيف قيمة إرجاع الدالة؟
أمر الإرجاع في Python يحدد هذا الخيار القيمة التي يجب إرجاعها إلى مستدعي الدالة. دعونا نفهم هذا من خلال المثال التالي.
الخطوة 1) لا تقوم الدالة بإرجاع أي شيء
هنا نرى متى لا تُرجع الدالة قيمة. على سبيل المثال، نريد مربع العدد 4، ويجب أن تُعطي الدالة الناتج "16" عند تنفيذ الكود. نحصل على هذا الناتج عند استخدام الكود "print x*x"، ولكن عند استدعاء الدالة "print square"، تُعطي "None" كناتج. هذا لأن استدعاء الدالة لا يُفعّل التكرار، وبالتالي تتوقف الدالة عند نهايتها. Python تُرجع القيمة "لا شيء" عند الخروج من نهاية الدالة.
الخطوة 2) استبدل أمر الطباعة بأمر تعيين.
ولتوضيح ذلك، سنستبدل أمر الطباعة بأمر إسناد. لنلقِ نظرة على الناتج.
عند تنفيذ الأمر "print square (4)"، فإنه يُعيد قيمة الكائن. وبما أنه لا توجد لدينا دالة محددة لتنفيذها هنا، فإنه يُعيد القيمة "None".
الخطوة 3) استخدم دالة "return" ونفذ الكود
سنرى الآن كيفية استرجاع الناتج باستخدام الأمر "return". عند استخدام الدالة "return" وتنفيذ الكود، سيُظهر الناتج "16".
الخطوة 4) قم بتشغيل الأمر "مربع الطباعة"
وظائف في Python هم أنفسهم كائن، والكائن له بعض القيمة. وسنرى هنا كيف Python يتعامل هذا الأمر مع كائن. عند تشغيل الأمر "print square"، فإنه يُعيد قيمة الكائن. بما أننا لم نُمرر أي وسيط، فلا توجد لدينا دالة مُحددة لتشغيلها هنا، لذا يُعيد قيمة افتراضية (0x021B2D30) وهي موقع الكائن. عمليًا Python البرنامج، ربما لن تحتاج إلى القيام بذلك أبدًا.
الحجج في الوظائف
الوسيط هو قيمة يتم تمريرها إلى الدالة عند استدعائها.
بمعنى آخر، من جانب الاستدعاء يكون وسيطًا، ومن جانب الدالة يكون مُعاملًا.
دعونا نرى كيف Python الحجج فعالة.
الخطوة 1) يتم تعريف الوسائط في تعريف الدالة. عند استدعاء الدالة، يمكنك تمرير قيم تلك الوسائط كما هو موضح أدناه.
الخطوة 2) لإعلان قيمة افتراضية لوسيط ما، قم بتعيين قيمة له في تعريف الدالة.
على سبيل المثال: ليس للمتغير x قيمة افتراضية. القيمة الافتراضية للمتغير y هي 0. عند إدخال وسيط واحد فقط عند استدعاء دالة الضرب، Python يُسند القيمة المُعطاة إلى x بينما يبقىping قيمة y تساوي صفرًا. ومن ثم فإن حاصل ضرب x في y يساوي صفرًا.
الخطوة 3) هذه المرة سنغير القيمة إلى y=2 بدلاً من القيمة الافتراضية y=0، وسيعيد الناتج (4×2)=8.
الخطوة 4) يمكنك أيضًا تغيير ترتيب تمرير الوسائط Pythonهنا قمنا بعكس ترتيب القيمتين x و y إلى x=4 و y=2.
الخطوة 5) يمكن أيضًا تمرير عدة وسائط كمصفوفة. في هذا المثال، نستدعي الوسائط المتعددة (1، 2، 3، 4، 5) عن طريق استدعاء الدالة (*args).
على سبيل المثال: لقد قمنا بتعريف الوسائط المتعددة على أنها الأرقام (1،2،3،4،5)؛ عندما نستدعي الدالة (*args)، فإنها تطبع الناتج على أنه (1،2،3،4،5).
نصيحة:
- In Python 2.7، لا يدعم النظام تحميل الدوال الزائد. تحميل الدوال الزائد هو القدرة على إنشاء عدة دوال بنفس الاسم ولكن بتنفيذات مختلفة. يتم دعم تحميل الدوال الزائد بشكل كامل في Python 3.
- يوجد خلط كبير بين الأساليب والدوال. الأساليب في Python ترتبط العناصر بمثيلات الكائنات، بينما لا ترتبط الدوال بها. عندما Python يستدعي أسلوبًا، فهو يربط المعلمة الأولى لذلك الاستدعاء بمرجع الكائن المناسب. بكلمات بسيطة، وظيفة مستقلة في Python هي "وظيفة"، في حين أن الوظيفة التي تعتبر سمة لفئة أو مثيل هي "طريقة".
هنا هو الكامل Python رمز 3
#define a function
def func1():
print ("I am learning Python function")
print ("still in func1")
func1()
def square(x):
return x*x
print(square(4))
def multiply(x,y=0):
print("value of x=",x)
print("value of y=",y)
return x*y
print(multiply(y=2,x=4))
هنا هو الكامل Python رمز 2
#define a function
def func1():
print " I am learning Python function"
print " still in func1"
func1()
def square(x):
return x*x
print square(4)
def multiply(x,y=0):
print"value of x=",x
print"value of y=",y
return x*y
print multiply(y=2,x=4)














