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

لوحة المتصدرين

  1. Ali Ahmed55

    Ali Ahmed55

    الأعضاء


    • نقاط

      10

    • المساهمات

      1861


  2. Mustafa Suleiman

    Mustafa Suleiman

    الأعضاء


    • نقاط

      6

    • المساهمات

      15370


  3. محمد عاطف17

    محمد عاطف17

    الأعضاء


    • نقاط

      4

    • المساهمات

      5583


  4. Mohammed Jaddoa

    Mohammed Jaddoa

    الأعضاء


    • نقاط

      3

    • المساهمات

      7


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 03/26/25 في كل الموقع

  1. السلام عليكم هو اي الyield في الباثيون واي الفرق مابينو وبين return ؟
    4 نقاط
  2. السلام عليكم و رحمة الله و بركاته اريد ان اشترك بدورة ادارة تطوير المنتجات ولاكن هدفي ليس بناء مشروعي الخاص! و انما ايجاد وظيفة او العمل كمستقل ما رأيكم و ماذا تنصحونني بارك الله فيكم
    3 نقاط
  3. السلام عليكم انا اتعلمت اسيسات الرياضات الذكاء الاصطناعي زي الجبر الخصي والتفاضل والتكامل و الاحتمالات والاحصاء وكمان علم البيانات و تعلم الاله وحاليا انا بتدرس التعلم العميق فا كانت عاوز عرف ازي بعد كده اتعلم اللذكاء الاصطناعي العام (AGI) بس انا كانت عاوز اتخصص في Computer Vision فا هل الو اتعلمت الذكاء الاصطناعلي العام يكون مفيد في المجال دي والا اي ؟
    2 نقاط
  4. دي المساله يتم إعطاؤك عددًا صحيحًا موجبًا nnn يمثل سطح شحن بحجم n×nn \times nn×n على سفينة. يمكن لكل خلية على السطح أن تحمل حاوية واحدة بوزن مقداره بالضبط www. ومع ذلك، يجب ألا يتجاوز الوزن الإجمالي لجميع الحاويات، في حال تم تحميلها على السطح، الحد الأقصى لقدرة تحمل السفينة maxWeight. أعد الناتج على أنه أقصى عدد من الحاويات التي يمكن تحميلها على السفينة. ودي الحل بتاعي return min(n * n, maxWeight // w) فا ليه الذاكرة كده Runtime 0 ms Beats 100.00% Analyze Complexity Memory 12.56 MB Beats 23.57%
    2 نقاط
  5. Hi , please recommande me a road map to learn next js based on Hsoub course
    2 نقاط
  6. وعليكم السلام ورحمة الله تعالى وبركاته، دورة إدارة تطوير المنتجات تقوم بالتركيز على تعليم المفاهيم والمراحل الأساسية لتطوير وإدارة المنتجات الرقمية من الفكرة حتى الإطلاق وما بعده فهي تشرح كيف يتم تطوير المنتجات الرقمية، وتشرح كيفية إدارة المنتجات بدءا من دراسة السوق وتحديد احتياجات المستخدمين وصولا إلى التخطيط، التنفيذ، المتابعة، والتحليل بعد الإطلاق. يمكنك أخذ فكرة عن مسارات ومحاور دورة إدارة تطوير المنتجات من خلال الصفحة الرسمية للاشتراك في الدورة من هنا: دورة إدارة تطوير المنتجات هذه الدورة موجهة أساسا لمن: ليس لديه خبرة في مجال البرمجة أو التصميم ويريد تنفيذ مشروعه الناشئ يريد تعلم إدارة تطوير المنتجات لتحسين فرصه التوظيفية يعمل في إدارة المنتجات ويرغب بتوسعة معلوماته حول عملية التطوير وإدارتها وبما أنك ترغب في تحسين فرصك التوظيفية فالمحاور التي ستتعلمها في الدورة ستساعدك في هذا الشأن من خلال تعلم: أساسيات إدارة تطوير المنتجات كيفية توظيف مصممين ومبرمجين إعداد المستندات اللازمة لتطوير المنتجات التعمق في منهجية أجايل وبالنسبة للوظائف التي يمكن تقلّدها يمكنك أن تعمل ك: مدير منتج (Product Manager) مالك المنتج (Product Owner) استشاري تطوير المنتجات محلل أعمال وفي مواقع العمل الحر كمستقل وخمسات، يمكنك إيجاد العديد من المشاريع التي تكون تحت وسم "إدارة المنتجات" وأي شيء بخصوص العمل بعد اشتراكك في الدورة يمكنك مناقشته من خلال مركز المساعدة: مركز مساعدة أكاديمية حسوب
    1 نقطة
  7. وعليكم السلام ورحمة الله وبركاته. نعم لا مشكلة فإن دورة تطوير المنتجات هي لمديري المشروعات وهي مناسبة لك كمبرمج أو مٌصمم سواء كنت تريد العمل على مشروع أو تريد الإلمام بالجانب الإداري للمشروعات لتحسين مهاراتك والحصول على وظيفة في ذلك المجال. وهي موجهة للفئة التالية: لمن ليس لديه خبرة في مجال البرمجة أو التصميم ويريد تنفيذ مشروعه الناشئ لمن يريد تعلم إدارة تطوير المنتجات لتحسين فرصه التوظيفية لمن يعمل في إدارة المنتجات ويرغب بتوسعة معلوماته حول عملية التطوير وإدارتها و في حال تم توظيفك من قبل شركة فهناك الكثير من المهام التي يتوجب عليك إنجازها وهذه بعض منها: مسؤول عن تحديد الفرص الجديدة لتطوير منتج جديد قابل للتسويق من المفهوم إلى التوزيع. تحسين منتج موجود لتلبية احتياجات العملاء بشكل أفضل وتنشيط السوق الحالية. متابعة المنتجات بعد اطلاقها وتقييمها. العمل على رفع التقارير الدورية للمدير العام. وغيرها من المهام الإدارية الأخرى الخاصة بإدارة المشاريع . وإذا أردت تفاصيل أكثر بخصوص العمل فستحتاج إلى التحدث لمركز المساعدة بخصوص ذلك الأمر. ويمكنك قراءة الإجابات التالية لمزيد من التفاصيل حول دورة تطوير المنتجات : وأخيرا إذا أردت أن تجد وظيفة في شركة أو حتى العمل كمستقل كمدير مشروعات فهذه الدورة مناسبة لك .
    1 نقطة
  8. مرحبًا فريق أكاديمية حسوب، أنا من المتابعين لدوراتكم، وكنت حابب أشارك معاكم تطبيقي العملي اللي بنيته باستخدام Streamlit بعد ما أنهيت عدد من الدروس على المنصة، وطبّقت فيه كل اللي اتعلمته بالإضافة لبعض الاجتهادات الشخصية. رابط التطبيق على Streamlit Cloud: https://ml-app-010.streamlit.app/ عن التطبيق: ده تطبيق تفاعلي شامل بيغطي خطوات علم البيانات والتعلم الآلي من أول رفع البيانات وتنظيفها لحد تقييم النماذج وتفسير النتائج. الهدف منه يكون أداة تعليمية أو حتى وسيلة لتسريع تجربة النمذجة خاصة في المشاريع الصغيرة والمتوسطة. مميزات التطبيق باختصار: رفع ملفات CSV، Excel، أو JSON. تنظيف البيانات (duplicates، missing values، outliers) سواء يدويًا أو أوتوماتيكيًا باستخدام توصيات ذكية. اختيار نوع المشكلة (تصنيف أو انحدار). دعم لمجموعة من النماذج (Sklearn، XGBoost، LightGBM، CatBoost... إلخ). إمكانية التدريب باستخدام cross-validation أو AutoML. عرض تقييم شامل للنماذج المختارة. دعم أدوات شرح النماذج مثل SHAP وLIME. تصدير الخطوات المنفذة إلى Jupyter Notebook تلقائيًا. ملاحظات مهمة للمستخدمين: في جزئية الـ Missing Values وOutliers: التطبيق بيقدم طريقتين للتعامل، الأولى أوتوماتيكية بتوصيات، والتانية يدوية. يفضل المستخدم ياخد باله إنه لازم يختار واحدة منهم عشان ميتلخبطش. بعد خطوة الـ Split: بيظهر في الـ Sidebar اختيارات لScoring Metric زي Accuracy، F1، AUC لو كانت المهمة Classification، أو R²، MSE لو كانت Regression. فلازم المستخدم ينزل في الـ Sidebar بعد الـ Split عشان يظبط إعدادات التقييم. خيار Stratify: متاح فقط لو كانت المشكلة تصنيف (Classification)، فلو بتتعامل مع انحدار (Regression) من الأفضل تشيل التحديد من عليه. التطبيق غير مناسب لبيانات الـ Time Series في الوقت الحالي. استخداماته المحتملة: أداة تعليمية للمبتدئين. تسريع خطوات النمذجة للمشاريع الصغيرة و المتوسطه فهم خطوات ML بشكل تفاعلي بدل كتابة كود طويل. في النهاية: أنا حابب أسمع رأيكم في التطبيق، وإذا عندكم أي اقتراحات لتحسينه أو تطويره، هكون ممتن جدًا. كل ده جزء من رحلة التعلُّم اللي بدأتها معاكم، ولسه مكمل
    1 نقطة
  9. السلام عليكم هو اي الفرق مابين tf.data.Dataset.list_files - tf.io.read_file() - tf.image.decode_jpeg ؟
    1 نقطة
  10. بالضبط، الدالة tf.data.Dataset.list_files() تقوم بإرجاع قائمة بالمسارات التي تطابق النمط المُعطى، لكن أحد المسارات التي تم إرجاعها هو مسار مجلد (.../PetImages/Cat) ليس ملف صورة .jpg. والدالة tf.io.read_file لا تستطيع قراءة محتويات مجلد، هي مصممة لقراءة محتويات ملف واحد، بالتالي عندما حاولت دالة map تطبيق load_and_decode_image على مسار المجلد ذاك، فشلت عملية tf.io.read_file بداخله. أي المشكلة في tf.data.Dataset.list_files فعند تمرير مسار مجلد بدون أي نمط wildcard مثل * أو *.jpg في النهاية، فـ TensorFlow تعتبر أنك تريد ذلك المسار نفسه كعنصر وحيد في مجموعة البيانات، بالتالي أنت قمت بإنشاء مجموعة بيانات cats تحتوي على عنصر واحد فقط، وهو السلسلة النصية '/kaggle/input/microsoft-catsvsdogs-dataset/PetImages/Cat' يجب كتابة التالي: cats = tf.data.Dataset.list_files('/kaggle/input/microsoft-catsvsdogs-dataset/PetImages/Cat/*.jpg')
    1 نقطة
  11. وعليكم السلام ورحمة الله وبركاته. أولا لنعرف الفرق بين الذكاء الاصطناعي الضيق (Narrow AI) والذكاء الاصطناعي العام (AGI). إن الذكاء الاصطناعي الضيق (Narrow AI) وهو ما نراه اليوم في تطبيقات مثل Computer Vision و معالجة اللغة الطبيعية (NLP)، وغيرها.و هذه الأنظمة متخصصة في مهام محددة ولا تمتلك وعيا أو قدرة عامة على التفكير. أما الذكاء الاصطناعي العام (AGI) فهو يشير إلى أنظمة ذكاء اصطناعي قادرة على فهم و تعلم وحتى تطبيق تلك المعرفة في مجموعة واسعة من المهام بشكل مشابه للبشر و لا يوجد حتى الآن AGI عملي والأبحاث فيه ما زالت نظرية. وبالنسبة إلى سؤالك فلا لأن Computer Vision يعتمد حاليا بشكل كبير على تعلم الآلة والتعلم العميق وليس على نظريات AGI. وبالنسبة لك فإن التركيز على التقنيات الحالية ل Computer Vision مثل CNNs، Transformers، GANs، Object Detection، Segmentation سيكون أفضل لك.
    1 نقطة
  12. هناك توضيح هام أولاً، الذكاء الاصطناعي الحالي هو Narrow AI، أي الأنظمة التي نستخدمها اليوم بما في ذلك أنظمة رؤية الحاسوب المتقدمة هي ذكاء اصطناعي ضيق أو متخصص، وتلك مصممة لأداء مهام محددة بكفاءة عالية جداً كالتعرف على الصور، ترجمة اللغات، لعب الشطرنج، لكنها لا تمتلك فهماً أو وعياً عاماً مثل الإنسان. بينما الذكاء الاصطناعي العام AGI ذلك نوع افتراضي ومستقبلي من الذكاء الاصطناعي يمتلك القدرة على فهم وتعلم وتطبيق المعرفة عبر مجموعة واسعة جداً من المهام بنفس مستوى كفاءة الإنسان وأفضل منه، وسيكون قادراً على التفكير المجرد، وحل المشكلات الجديدة تماماً، والتخطيط الاستراتيجي، والتعلم المستمر والتكيف مع أي بيئة أو مهمة. لذا لا يوجد حالياً نظام AGI حقيقي، فما زال البحث في مراحله الأولى، ولا يوجد منهج دراسي محدد لتعلم AGI بنفس الطريقة التي تتعلم بها الجبر أو التعلم العميق، ذلك هدف بحثي طويل الأمد أكثر من كونه مجالاً تطبيقياً تستطيع تعلمه الآن. ركز على إتقان التعلم العميق وتطبيقاته في رؤية الحاسوب بما أنك تتخصص في رؤية الحاسوب، وهذا ما يجب أن يكون تركيزك الأساسي، تعمق في التالي: معماريات CNN المتقدمة ResNet, EfficientNet، وغيرهم. كشف الأجسام Object Detection وتقسيم الصور Segmentation. معالجة الفيديو. النماذج التوليدية للصور GANs, Diffusion Models. محولات الرؤية Vision Transformers - ViT. التعلم ذاتي الإشراف Self-supervised Learning في الرؤية. تطبيقات رؤية الحاسوب ثلاثية الأبعاد 3D Vision.
    1 نقطة
  13. مجهود ممتاز جدًا حقًا، ستتعلم الكثير عند القيام بمثل تلك المشاريع وسيتطور مستواك بفارق كبير مقارنًة بما كنت عليه عند بدء المشروع، ففي البداية يكون الأمر مبهم وضبابي وشيئًا فشيئًا يتضح لك مع المحاولة والصبر والتعلم من الأخطاء. الكود منظم بشكل جيد ويتبع تسلسل منطقي لخطوات المشروع وهي تحميل -> تنظيف -> EDA -> تقسيم -> تدريب -> تقييم -> تفسير -> تصدير. ينقصه بعض التعليقات في الأماكن الهامة لكن تتمكن من استيعاب المنطق عند العودة إليه بعد فترة، ولا تتكاسل عن ذلك فستنسى بلا شك رغم أنك كتبت الكود، أيضًا تقسيم المشروع إلى ملفات بمعنى وحدات، فحاليًا 1300 سطر من الكود صعب القراءة والصيانة أو التطوير. والكود الخاص بالتصدير للـ Notebook معقد ولكنه مكتوب بشكل جيد، حيث حاولت إعادة بناء الخطوات التي قام بها المستخدم في شكل كود Python داخل Notebook، بما في ذلك تنظيف البيانات، التقسيم، بناء الـ Pipeline، والتدريب مع مراعاة Hyperparameter Tuning في حال تم استخدامه. للتحسين، كبداية في واجهة المستخدم، القوائم المنسدلة لها نفس لون الخلفية ولا يظهر بشكل واضح هل تم الضغط على القائمة أم لا، لأنّ الخيارات لا تظهر بشكل واضح: وحاليًا يستطيع المستخدم تطبيق التوصيات ثم تطبيق طريقة يدوية،والكود لا يمنعه، من الأفضل إضافة st.radio بدلاً من زرين منفصلين وليكن اختر طريقة التعامل: توصيات آلية | طريقة يدوية، أو بعد الضغط على أحد الأزرار، يتم تعطيل disabled=True في الخيارات الأخرى لتلك الخطوة المفقودات أو القيم المتطرفة حتى يتم إعادة تحميل الصفحة أو إضافة زر Reset Cleaning Step. أيضًا أنت تضع الـ cv_scoring في الـ Sidebar، ومن الأفضل نقله إلى قسم Model Selection & Training الرئيسي ليظهر بشكل أوضح بعد خطوة الـ Split وقبل التدريب. و لتحسين الـ UI أكثر في الـ Sidebar اجعل خيار stratify معطلاً disabled=True) في حال st.session_state.problem_type == "Regression" ويا حبذا لو قمت بالتوجيه البصري للمستخدم، من خلال st.info, st.warning, st.success, st.error بشكل أكثر فعالية لتوجيهه خلال الخطوات، مثلاً، بعد الـ Split، اعرض st.info(الخطوة التالية: قم بتحديد مقاييس التقييم من الشريط الجانبي، ثم اختر النماذج وقم بالتدريب). وكذلك مؤشرات تقدم أفضل للمهام الطويلة مثل AutoML, GridSearch، حساب SHAP، اعتمد على st.spinner مع رسائل واضحة، ولو أمكن، حاول تحديث شريط التقدم بشكل أكثر دقة. والإعتماد على st.tabs لتقسيم الأقسام الكبيرة ومنها EDA أو التقييم إلى أجزاء أصغر. أيضًا فكر في كيفية السماح للمستخدم بالعودة لخطوة سابقة وتعديلها دون الحاجة لإعادة كل الخطوات التالية، وذلك تحدٍا في Streamlit ويتطلب تخطيطاً دقيقاً لـ session_state. وحاليًا التطبيق يدعم PolynomialFeatures و OneHotEncoder، حاول إضافة خيارات أخرى شائعة ومنها LabelEncoder مع تحذير بشأن استخدامه، أو ربما طرق Binning للمتغيرات الرقمية. أيضًا السماح للمستخدم بتحديد الأعمدة التي يريد تطبيق Scaling عليها أو Encoding عليها بشكل أدق بدلاً من تطبيقها على كل الأعمدة الرقمية/الفئوية المكتشفة تلقائياً، فحالياً يتم تحديد num_cols و cat_cols تلقائياً. وفي EDA حاول إضافة خيار لعرض توزيع المتغيرات الفئوية Bar plots، وإضافة خيار لرسم العلاقة بين كل متغير مستقل والمتغير التابع Scatter plot للـ Regression، Box plot/Violin plot للـ Classification. أيضًا عليك التعامل مع الأعمدة في الـ Pipeline، حاليًا يوجد st.session_state.num_cols و st.session_state.cat_cols التي يتم تحديدها بعد الـ Split، وذلك جيد. لكن المتغيرات true_num_cols و true_cat_cols هي للتعامل مع الأعمدة الرقمية التي ربما تكون فئوية أي عدد قليل من القيم الفريدة، وهي لتصدير الـ Notebook، من الأبسط والأوضح إعادة تحديد num_cols و cat_cols المستخدمة في ColumnTransformer بناءًا على X_train.dtypes مباشرًة قبل تعريف preprocessor في قسم التدريب، للتأكد من أنها تعكس الحالة الحالية للبيانات بعد كل خطوات التنظيف. وزر Finalize Cleaning، لا ينفذ أي عملية تغيير بيانات إضافية، عليك إما إزالته، أو إعطاؤه وظيفة واضحة كتأكيد أن المستخدم انتهى من التنظيف والانتقال للخطوة التالية، ربما عن طريق إخفاء خيارات التنظيف. وللعلم نماذج مثل CatBoost تستطيع التعامل مع المتغيرات الفئوية مباشرة وأحياناً بشكل أفضل من One-Hot Encoding، والـ Pipeline الحالي يقوم بعمل OHE لكل الأعمدة الفئوية، بإمكانك إضافة خيار للسماح لـ CatBoost بالتعامل مع الأعمدة الفئوية مباشرة إن تم اختياره، لكن ذلك يتطلب تعديل الـ preprocessor لـ CatBoost.
    1 نقطة
  14. لا مشكلة في الحل، فهو الأفضل من حيث الوقت والمساحة النظرية للخوارزمية نفسها O(1) space complexity لكن مجرد تشغيل مفسر بايثون وتحميل المكتبات الأساسية اللازمة لتشغيل الكود يستهلك قدراً معيناً من الذاكرة، وهو استهلاك أساسي لا مفر منه حتى لو كان الكود بسيطاً جداً. وجميع الحلول الحلول الصحيحة المقدمة بلغة بايثون للمسألة ستكون لها بصمة ذاكرة متشابهة جداً، وقريبة من الحد الأدنى الذي تستهلكه بيئة بايثون. لو أردت استهلاك أقل للذاكرة نستخدم لغة منخفضة مثل C++ وستجد أنها تستهلك 8.44 ميجابايت class Solution { public: int maxContainers(int n, int w, int maxWeight) { return (n*n > maxWeight/w) ? maxWeight / w : n*n; } };
    1 نقطة
  15. الاستهلاك المرتفع للذاكرة في الحل ليس بسبب الخوارزمية الخاص بك نفسها ولكن هذا غالبا بسبب طريقة قياس الذاكرة في LeetCode. حيث الحل الذي قدمته أنت بالفعل هو حل رياضي مباشر لا يتطلب تخزين أي هياكل بيانات إضافية القوائم أو القواميس أو غريها و لذلك فهو في الواقع موفر في الذاكرة بالفعل . وأيضا غالبا يقوم LeetCode عند قياس الذاكرة بالإعتماد على البيئة الكاملة لتشغيل الكود وليس فقط على الذاكرة التي يستخدمها الحل الخاص بك. أى أنه يحتسب الذاكرة المستخدمة بواسطة تنفيذ الكود مثل تحميل المكتبات في بايثون و أيضا المدخلات الكبيرة التي يتم تمريرها للحل الخاص بك . وأيضا الذاكرة المؤقتة التي تستخدم أثناء الترجمة والتشغيل. ولهذا لا داعي للقلق بشأن الذاكرة في هذا الحل لأنه بالفعل أمثل من حيث التعقيد المكاني space complexity O(1).
    1 نقطة
  16. return بالنسبة للبيانات الكبيرة كقائمة أو أي مجموعة بيانات تحتوي على عدد كبير جدًا من العناصر، فسيحتاج بايثون إنشاء القائمة كاملة في الذاكرة وتخزين كل عناصرها قبل أن يتم إرجاعها، وعند التعامل مع ملايين العناصر، أو قراءة ملف كبير جدًا، فأحيانًا تستهلك كمية هائلة من ذاكرة الوصول العشوائي RAM، وذلك يبطئ البرنامج أو حتى يؤدي إلى انهياره بسبب نفاد الذاكرة MemoryError. أما yield، فالدالة لا تقوم بإنشاء المجموعة كاملة في الذاكرة دفعة واحدة، بل تُنتج yield قيمة واحدة فقط في كل مرة يتم فيها طلب قيمة من المولّد، وتحتفظ الدالة بحالتها وتتوقف مؤقتًا وعند طلب القيمة التالية، تستأنف من حيث توقفت وتنتج القيمة التالية، وهكذا. بالتالي في أي لحظة زمنية، لا يتم تخزين سوى عنصر واحد أو عدد قليل جدًا من العناصر اللازمة للحساب في الذاكرة، بغض النظر عن الحجم الكلي للتسلسل الذي يمكن للمولّد إنتاجه، وذاك ما يسمى التقييم الكسول Lazy Evaluation.
    1 نقطة
  17. اه عشان كده الyield افضل من حيث استهلاك الذاكرة صح الف شكراا جدا لحضرتكم جزاكم الله كل خير
    1 نقطة
  18. وعليكم السلام ورحمة الله وبركاته. في بايثون إن yield و return هما كلمتان رئيسيتان يتم إستخدامهم في الدوال ولكل واحدة منهما لها سلوك مختلف عن الآخر . حيث عندما تستخدم yield في دالة فإنها تحول الدالة إلى مولد (Generator) و المولد هو نوع خاص من الدوال التي تعيد قيمة واحدة في كل مرة عند استدعاء next() عليها. وعند الوصول إلى yield فإنه يتم إرجاع القيمة الموجودة بعده ولكن دون إنهاء الدالة.و يتم حفظ حالة التنفيذ عند نقطة yield ويمكن استئنافها في المرة التالية التي يتم إستدعاء المولد. ويمكنك متابعة الدرس التالي على موسوعة حسوب : https://wiki.hsoub.com/Python/generators
    1 نقطة
  19. وعليكم السلام ورحمة الله وبركاته. الفرق الأساسي بينهما هو أن yield تُستخدم في تعريف الدوال المولدة (generators). وعندما تستخدم yield داخل دالة، فإنها تُرجع قيمة وتُحفظ حالة الدالة بحيث يمكن استئناف التنفيذ منها لاحقاً عند طلب القيمة التالية. هذا يعني أن الدالة لا تنتهي بالكامل بعد تنفيذ yield، بل تنتظر حتى يُطلب منها العنصر التالي. بينما return تقوم بإرجاع قيمة واحدة وتنهي عمل الدالة بالكامل، بحيث لا يمكن استئنافها بعد ذلك. وإليك المثال التالي للتوضيح def generate_numbers(): for i in range(5): yield i gen = generate_numbers() for number in gen: print(number) # ستتم طباعة الأرقام من 0 إلى 4 تدريجياً بينما باستخدام return def return_number(): for i in range(5): return i # ستعيد القيمة 0 وتنهي الدالة فوراً print(return_number()) # سيطبع 0 فقط
    1 نقطة
  20. هناك فرق كبير، return لإنهاء تنفيذ الدالة فورًا وإرسال قيمة أو None في حال لم تُحدد قيمة، وبمجرد أن تصل الدالة إلى جملة return، يتوقف تنفيذها تمامًا، وأي كود يأتي بعد return داخل نفس الدالة لن يتم تنفيذه. أما yield هي خاصة بنوع من الدوال يسمى الدوال المولّدة Generator Functions، وباستخدامها بها تُنتج قيمة مثل return، لكنها لا تنهي الدالة، ما يحدث هو تعليق أو توقف مؤقت لتنفيذ الدالة وتحتفظ بحالتها الداخلية وهي قيمة المتغيرات المحلية ومكان التوقف. وعند استدعاء دالة تحتوي على yield، لا تُنفذ الكود مباشرة، بل تعود بكائن خاص يسمى مولّد Generator Object، وهو مُكرِّر Iterator، وفي كل مرة تطلب فيها قيمة من المولّد من خلال حلقة for أو الدالة next()، تستأنف الدالة تنفيذها من النقطة التي توقفت عندها بعد yield السابقة، وتستمر حتى تصل إلى yield التالية فتنتج قيمة وتتوقف مؤقتًا مرة أخرى أو حتى نهاية الدالة. أي تحتفظ الدالة المولّدة بحالتها بين الاستدعاءات المتعاقبة للمولّد.
    1 نقطة
  21. وعليكم السلام ورحمة الله تعالى وبركاته، يمكنك التعرف علىمفهوم الكلمة المفتاحية yield واستخداماتها في لغة بايثون من خلال الإجابتين هاتين: بالنسبة للفرق بينها وبين return فيكمن ذلك في أن yield تعمل مثل return في إعادة القيمة التي تم حسابها ولكنها لا توقف عمل الدالة بشكل كامل بل تسمح لنا بإعادة استدعاء الدالة نفسها مع حفظ آخر خطوة قمنا بها والعمل على الخطوة التالية.
    1 نقطة
  22. I have purchased the JavaScript course so as you mentioned : 1- JavaScript Fundamentals 2- react 3- type script what about Node.js?
    1 نقطة
  23. لم تحل المشكلة حتى بعد تغيير اسم الملف لأنّ Git سيحتفظ بسجل الملفات الكبيرة التي سبق رفعها أو إضافتها ل commit حتى لو تجاهلتها لاحقًا. ولذلك فيمكننا حل هذه المشكلة من خلال تنفيذ الأمر التالي git rm --cached path/to/giant_file مع استبدال الكلمة path/to/giant_file بالمسار للملف الذي يسبب المشكلة ثم عمل commit مع --amend من خلال تنفيذ الأمر التالي git commit --amend وبعدها يمكنك تجربة دفع الملفات للمستودع البعيد
    1 نقطة
  24. استخدم الأمر: DISM /Online /Set-UILang:ar-LY ثم: DISM /Online /Set-SysUILang:ar-LY وأعد تشغيل الحاسوب.
    0 نقاط
×
×
  • أضف...