مرحبًا بعودتك.
في هذا الفيديو أريد أن أتحدث عن مفهوم مهم وهو العودة.
إنها كلمة أساسية في Python سنراها كثيرًا عند العمل مع الوظائف.
لذلك دعونا نلقي نظرة.
إذا دعنا نقول أنني أريد إنشاء دالة تسمى sum ، والتي بالمناسبة ، موجودة بالفعل في Python ، لكننا
سنقوم بإنشاء دالة خاصة بنا وسأقول رقم واحد للرقم واحد.
والرقم اثنان ، حسنًا ، ستضيف دالة الجمع العدد واحد زائد عدد اثنين ، دالة جميلة وبسيطة.
الآن إذا قمت بتشغيل بعضها برقم أربعة وخمسة ، خمن ماذا سيحدث؟
أنا ذاهب إلى الركض.
ولا يحدث شيء ، وهو ما أعنيه ، قد لا يكون مفاجئًا لك لأننا لا نطبع أي شيء.
الصحيح.
ولكن ماذا لو قمت بتشغيل الطباعة هنا؟
حسنًا ، هذا التغيير.
دعونا نرى.
همم.
لم أحصل على شيء.
هل هذا ما توقعته؟
ولم نر أيا من قبل ، أليس كذلك؟
أعني ، تذكر عندما كانت لدينا قائمة ، دعنا نقول واحد ، اثنان ، ثلاثة ، ثم فعلنا شيئًا
مثل ذلك واضحًا.
في الضعف الجنسي لدينا.
أعطانا هذا السهم الصغير ولم يقل أي شيء.
وتحدثنا عن فكرة وجود شيء في القوائم مثل تغيير واضح للقائمة الفعلية ومسح كل شيء وإفراغ
القائمة ، لكنها لا تُرجع قائمة جديدة.
يقوم فقط بتعديل القائمة الحالية ، ولكن بدلاً من ذلك لا يُرجع إلينا أي شيء.
حسنًا ، الوظائف هي فقط من هذا القبيل.
يجب عليهم دائمًا إرجاع شيء ما ، وعندما لا يقوموا بإرجاع أي شيء مثل عدم وجود كلمة رئيسية للعودة هنا
، فإنه لا يُرجع شيئًا تلقائيًا.
لذلك إذا لم يكن لدينا شيء مثل العودة إلى هنا ، فلن يعيدنا شيئًا دائمًا.
ولكن إذا أضفنا العودة ، فسيظهر ذلك بمجرد وصولنا إلى السطر الثاني.
يا.
أريدك أن تخرج من هذه الوظيفة.
وعندما تخرج من هذه الوظيفة ، أريدك أن تعيد ما يعطينا هذا التعبير.
إذا قمت بالنقر فوق تشغيل.
أحصل على تسعة؟
إذا غيرنا هذا إلى عشرة زائد خمسة ، فسنحصل على 15.
وهذه قاعدة عامة جيدة للوظائف ، لأن الدوال يمكنها أن تفعل شيئين ، صحيح.
واحد ، يمكنه إرجاع شيء ما.
لذلك في نهاية الوظيفة ، أيا كان ، بعد تشغيل الوظيفة ، نعيد شيئًا إما لا شيء
أو نوعًا من القيمة ، نوعًا ما من نوع البيانات ، أو يمكن أن يكون لدينا وظيفة لا تُرجع
أي شيء ولكن ربما تعدل شيئا ما.
لذلك ، على سبيل المثال ، يمكنني الطباعة.
أهلاً.
وإذا كنت قد جريت هنا.
لا أرجع شيئًا لأنني لا أملك بيان الإرجاع هذا.
ومع ذلك ، فإن وظيفتي تقوم بتعديل شيء ما.
حسنًا ، مظهر هذا النص صحيح؟
يطبع مرحبا بالنسبة لنا.
لذا فإن الوظيفة إما أن تعدل شيئًا ما في برنامجنا أو تعيد شيئًا ما.
وهذا موضوع متقدم جدًا وسنناقشه لاحقًا عندما نتحدث عن البرمجة الوظيفية.
لكن القاعدة الأساسية الجيدة للوظائف هي أن هذه الوظيفة يجب أن تؤدي شيئًا واحدًا جيدًا حقًا.
وعادة يجب أن تعيد الدالة شيئًا ما.
الآن ، هذا لا يعني أن أي وظيفة ربما تقوم بأشياء متعددة أو أي وظيفة لا ترجع شيئًا
ما هي أمر سيء.
ولكن من الممارسات الجيدة بشكل عام أن تجعل الكود الخاص بك بسيطًا وقابل للقراءة بحيث يكون لديك هاتان القاعدتان.
على سبيل المثال ، هنا ، إذا كان لدي طباعة وإضافة ، حسنًا ، هذه الوظيفة تقوم بأشياء متعددة.
إنها مقلقة بشأن الطباعة وهي أيضًا مقلقة بشأن شيء ما.
والتعريف.
هذه الوظيفة تسمى المجموع.
أعني ، إذا لم أكن أعرف أو لم أر هذا وكل ما فعلته هو تشغيل البعض.
أعتقد أن الحصول على طباعة عالية سيكون مفاجئًا لأن الاسم لا يصف حقًا ما يفعله.
أعني ، أتوقع أن يتم تلخيص هذا.
لماذا برنامجي يقول مرحبا؟
لذلك نريد التأكد من أن وظيفتنا تؤدي شيئًا واحدًا وشيئًا واحدًا فقط بشكل جيد ، لأنه كما
سنرى لاحقًا ، يمكننا دمج وتشغيل وظائف مختلفة معًا.
ثم نريد أيضًا التأكد من أننا نعيد شيئًا ما لأن ما يمكننا فعله بهذه الطريقة هو أنه يمكننا
بالفعل تعيين هذه القيمة المرجعة إلى متغير.
على سبيل المثال ، يمكنني القول أن مجموع يساوي عشرة.
خمسة.
ولأن هذه الدالة تُرجع شيئًا ما وعندما تنتهي ، سيكون للتشغيل 15 قيمة.
هذا هو نفس ما نفعله هنا.
وهذا هو الجزء الرائع.
الآن يمكنني تشغيل ربما حوالي عشرة زائد المجموع.
الآن دعنا ننتقل إلى هذا واحدًا تلو الآخر.
أنا أحدد وظيفتي ، سيقول مترجم بايثون ، حسنًا ، أعرف ما هو البعض.
الآن قمت بتعريفه.
سأحتفظ به في الذاكرة.
سيستمر ، ويستمر حتى السطر السابع وسيقول ، مرحبًا ، أريد إجماليًا
متغيرًا وأريد أن يساوي هذا المتغير الكلي حوالي عشرة خمسة.
وقبل أن نخصص أي شيء لـ Total python ، سيقول المترجم بعضًا.
ما بعض مرة أخرى.
أوه ، أتذكر هنا أنه في ذاكرة OC في البعض سأعطيها الحجج العاشرة والخامسة.
لذلك سوف تقوم بتشغيل هذه الوظيفة.
بمجرد أن ننهي قوس الإغلاق هذا ، سننتقل إلى المجموع.
سيقول ، مرحبًا ، العدد واحد سيساوي عشرة ، العدد اثنين سيساوي خمسة.
ننتقل الآن إلى السطر الثاني وسيقول ، مرحبًا ، أريدك أن تضيف عشرة زائد خمسة لأنني أعرف ما هي هذه
المتغيرات.
وبعد ذلك بمجرد أن تنتهي من ذلك ويتحول إلى 15 ، أريدك أن تعود.
إذن ، مترجم بايثون ، أخيرًا ، عند الانتهاء من الاتصال ، سيقول البعض ، مهلا ، قم
بتعيين القيمة 15 إلى إجمالي المتغير ، ثم ينتقل إلى السطر التالي.
مرحبًا ، أريد طباعة شيء ما.
ماذا تريد ان تطبع؟
حسنًا ، أريد طباعة هذا.
سيقول ، مهلا ، ما هو بعض؟
أعرف ما هو البعض.
لدي في الذاكرة.
ثم مرة أخرى ، سيقول عشرة.
ومن ثم ستكون الحجة التالية هي الكلية.
مرحبًا ، دعنا نكمل.
اسمحوا لي أن أذهب في الذاكرة واكتشف ، أوه ، إنها 15.
لذا فهو مثل قول 15.
وهذه هي قوة الوظائف ، أليس كذلك؟
أنا قادر على إعادة الأشياء وإسنادها إلى متغيرات واستدعائها على هذا النحو.
ويمكنني الاستمرار في تشغيلها إذا أردت القيام بذلك إذا كنت أرغب في جعل هذا الأمر أكثر بساطة ، يمكنني استخدام
بعضها بدلاً من الإجمالي هنا.
وانظر إلى ذلك.
الآن لدي كل شيء في سطر واحد وإذا قمت بالنقر فوق تشغيل.
ثانية.
لا يزال يعمل.
تمام.
لكن ماذا لو فعلنا شيئًا كهذا؟
ماذا لو قلت تحديد بعض ثم سأقول تحديد داخل هنا آخر.
الدالة ، وهذه الوظيفة تأخذ العدد الأول والعدد الثاني.
وهنا نعود أخيرًا ، رقم واحد.
ورقم اثنين.
همم.
دعونا نختبر هذا.
ماذا تعتقد سوف يحصل؟
حسنًا ، لنفترض أولًا أن الإجمالي يساوي حوالي عشرة زائد 20.
ثم سأقوم بطباعة المجموع.
إذا قمت بالنقر فوق تشغيل.
لم أحصل على شيء.
حاليا.
لماذا هذا؟
وهذا يجب أن يكون واضحًا لك ، لأنني هنا أقول ، مهلا ، أريدك أن تحدد البعض وماذا
سنفعل بالوظيفة؟
حسنًا ، سأقوم هنا بتعريف دالة أخرى ، لكن بيان الإرجاع هذا لا يعمل
بشكل صحيح.
لأن كل ما نقوم به داخل هذه الكتلة ، كتلة الشفرة هذه.
هل هذا الجزء.
نحن نحدد الوظيفة ، لكننا لا نستدعي دالة أخرى أبدًا.
لذا فإن هذا لا يُرجع شيئًا.
وفقدنا القدرة على استدعاء هذه الوظيفة بشكل جيد.
فكيف يمكننا حل هذا؟
طريقة واحدة هي العودة ، أليس كذلك؟
لذا في النهاية هنا ، علينا التأكد من أن المسافة البادئة صحيحة وسنقوم بإرجاع وظيفة
أخرى.
لذلك دعونا نضيف العودة ونرى ما يحدث هنا.
إذا قمت بالنقر فوق تشغيل.
حسنًا ، حصلت على هذه الوظيفة الآن.
إذن ، ستساوي Total هذه الدالة التي أعادناها ، وهي موجودة في الذاكرة.
تمام.
لكني لا أحصل على النتيجة التي أريدها.
الصحيح.
ولما ذلك؟
لان.
حسنًا ، نحن لا نسمي هذه الوظيفة.
إذن ، هناك عدة طرق يمكننا من خلالها القيام بذلك.
يمكننا إما إعطائها المعلمات أو الحجج هنا.
لنفترض إذن 1020 وإذا قمت بالنقر فوق تشغيل.
أحصل على 30 أو إذا أردنا الاحتفاظ بكل ما نقدمه هنا ، يمكنني ببساطة أن أقول وظيفة أخرى.
لذلك إذا أعطيناها رقم واحد ورقم اثنين وقمت بالنقر فوق تشغيل.
مهلا ، انظر إلى ذلك.
أحصل على 30.
الآن هذا الفيديو قد تضطر إلى مشاهدته مرارًا وتكرارًا لأنه يمد عقلك قليلاً.
ولكي أكون صادقًا ، هذه الوظيفة ليست جيدة جدًا لأنها جيدة ، إنها مربكة للغاية.
يجب أن تكون وظيفتك سهلة الفهم.
لذلك قد نرغب في تغيير هذا قليلاً ، ربما بدلاً من ذلك هنا باستخدام نفس أسماء المعلمات.
فقط لتوضيح ذلك.
ربما يمكننا أن نقول واحد واثنين.
ثم هنا نقوم بعمل واحد زائد واثنين لتوضيح أنه عندما نعود ، هذه الدالة الأخرى ، أستخدم المعلمتين
رقم واحد ورقم اثنين اللذان نسميهما هنا.
لأن تعريف الوظيفة هذا لا يهتم حقًا بماهية هذه الأشياء.
إنه يهتم فقط عندما يتم استدعاء وظيفة أخرى.
الآن ، إذا كنت بحاجة إلى إيقاف الفيديو مؤقتًا وإلقاء نظرة على هذا وربما التدرب على ذلك قليلاً
، فهذا مفهوم تمامًا.
لكني أردت أن أظهر لك قوة العودة.
يمكن أن يكون لديك وظائف متداخلة تمامًا كما تفعل مع الشروط ، ولكن عليك أن تكون
حريصًا على أن وظيفتك إما ترجع شيئًا ما ، وإلا فلن ترجع شيئًا.
وفي معظم الأوقات ، سترغب في إرجاع شيء ما من دالة حتى نتمكن من القيام بشيء مثل هذا
، حيث نقوم بتعيينه إلى متغير حتى نتمكن من استخدامه لاحقًا في برامجنا.
سأراك في المرحلة التالية.
مع السلامة.
شيء أخير.
تخرج الكلمة الأساسية للعودة من الوظيفة تلقائيًا بحيث إذا أضفت جزءًا آخر من التعليمات البرمجية مثل الطباعة.
مرحبًا.
أو ربما أعود خمسة هنا.
ترى أنه لا يزال ساريًا.
ولكن إذا قمت بتشغيل هذا.
ما زلت أحصل على 30 لأن المترجم الفوري لا يمكنه أبدًا أن يضع السطر الخامس والسادس ، لأنه بمجرد أن
نعيد شيئًا ما من دالة ، فإنه يخرج من هذه الوظيفة.
وسبب عدم خروج هذا الجزء من الدالة هو أنه تذكر أننا نحدد داخل هذه
الدالة.
لذلك نحن في الواقع لا نشغل هذا الجزء.
نحن نقول فقط ، عندما نرى وظيفة أخرى تظهر في الكود الخاص بنا ، فإننا نعرف ما هي ، لكننا
لن نقوم بتشغيلها.
لذلك سيبدو هكذا.
وبمجرد أن يرى بيان الإرجاع ، عندما يتم استدعائه ، سيقول
، حسنًا ، سأخرج من هذه الوظيفة بهذه القيمة.
فقط القليل من الرؤساء.