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

Ahmed Sadek Elamine Touahria

الأعضاء
  • المساهمات

    510
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    5

إجابات الأسئلة

  1. إجابة Ahmed Sadek Elamine Touahria سؤال في ماذا تعني isNaN في جافاسكربت كانت الإجابة المقبولة   
    NaN في JavaScript اختصار لـ "Not-a-Number" ، ترجع دالة isNaN () t صحيح إذا كانت القيمة NaN وكما تقوم أيضابتحويل القيمة إلى رقم قبل اختبارها.
    الفرق بين ()isNan و ()Number.isNan : 
    دالة الـ isNaN () ترجع صحيحًا إذا كانت القيمة ليست رقمًا. تُرجع الدالة Number.isNaN () صحيحًا إذا كان الرقم ليس رقمًا. بعبارة أخرى:
    isNaN () يحول القيمة إلى رقم قبل اختبارها. مثال
    // ترجع صحيحا; isNaN('مرحبا'); //false  
    // ترجع خطأ; Number.isNaN('مرحبا');//false إليك المقال أدناه للمزيد عن isNaN 
    https://wiki.hsoub.com/JavaScript/isNaN
  2. إجابة Ahmed Sadek Elamine Touahria سؤال في استفسار حول ListView.builder في flutter كانت الإجابة المقبولة   
    نعم ، Listview.builder في الفلاتر معمولة من أجل البيانات الكبيرة فهي تعمل على مبدأ العرض المناسب في كل مرة ، معناه أنو مثلا عملت إستعلام للبيانات حجمها 10000 أو أكثر فهنا Listview.builder تقوم ببناء عرض البيانات 50 الأولى لما المستخدم يعمل scroll مثلا أو اي event تختفي 50 البيانات الأولى ويتم بناء 50 البيانات الثانية وهكذا ..
    الفرق الرئيسي بين ListView و ListView.builder
    يتطلب مُنشئ ListView منا إنشاء جميع العناصر مرة واحدة. يعد هذا أمرًا جيدًا عندما تكون عناصر القائمة أقل وستظهر جميعها على الشاشة ، ولكن إذا لم يكن الأمر كذلك بالنسبة لعناصر القائمة الطويلة ، فهذا ليس ممارسة جيدة.
    بينما
    سيقوم مُنشئ ListView.Builder بإنشاء عناصر أثناء تمريرها على الشاشة مثل عند الطلب. هذه هي أفضل ممارسة لتطوير عنصر واجهة مستخدم القائمة حيث لن يتم عرض العناصر إلا عند ظهور العناصر على الشاشة.
  3. إجابة Ahmed Sadek Elamine Touahria سؤال في تسقيف عدد requests في django rest framework كانت الإجابة المقبولة   
    يوفر اطار العمل drf هذه الخاصية ولتجاوز  الإعدادات الافتراضية ، يوفر  مجموعة من الزخارف الإضافية التي يمكن إضافتها إلى endpoints الخاصة بك. يجب أن تأتي هذه بعد (أدنى)  api_view. على سبيل المثال ، لإنشاء view يستخدم الخانق  throttle للتأكد من أنه لا يمكن استدعاءه إلا مرة واحدة يوميًا من قبل مستخدم معين ، استخدمthrottle_classes decorator ، وقم بتمرير قائمة بفئات الخانق:
    # نستورد المكتبات المهمة from rest_framework.decorators import api_view, throttle_classes from rest_framework.throttling import UserRateThrottle class OncePerDayUserThrottle(UserRateThrottle): rate = '1/day' # هنا عدد الاستعلامات في اليوم @api_view(['GET']) @throttle_classes([OncePerDayUserThrottle]) # ثم نمررها من هنا كمزخرف def view(request): return Response({"message": "انتهت صلاحيت اليوم نراك غدا"})  
  4. إجابة Ahmed Sadek Elamine Touahria سؤال في مشكلة خطأ 403 في سيرفر Nginx كانت الإجابة المقبولة   
    قد يكون سبب المشكلة هو عدم وجود أذونات او صلاحيات . تحقق من الصلاحيات في  home/user و home/user/your_project.
    لكن ، أعتقد أنه سيكون من الأفضل لك (أسهل مع فرص أقل للتأثيرات الجانبية) عن طريق نقل STATIC_ROOT إلى  / var/www/html/static 
    إذا كنت بحاجة إلى مزيد من التفاصيل ، فتحقق من سجلات nginx - لا تعتمد فقط على مخرجات وحدة التحكم. يمكنك أيضًا تشغيل nginx بتسجيل أكثر تفصيلاً.
    اذا كنت تريد التحقق من الصلاحيات والأذونات اتبع الأمر التالي 
    sudo chmod 777 /home/username/projectdir/staticfiles هنا قد قمنا بإمداد صلاحية المجلد لكل المستخدمين 
     
  5. إجابة Ahmed Sadek Elamine Touahria سؤال في كيفية عرض محتوى HTML مع jinja باستخدام فلاسك flask؟ كانت الإجابة المقبولة   
    يوفر MarkupSafe سلوك Jinja التلقائي. يمكنك استيراد Markup  واستخدامها لإعلان قيمة HTML safe :
    from markupsafe import Markup value = Markup('<strong>Hsoub Academy</strong>') مرر ذلك إلى القوالب ولن تضطر إلى استخدام | عامل التصفية safe .
  6. إجابة Ahmed Sadek Elamine Touahria سؤال في الوصول إلى جميع العناصر معاً ب جافاسكريبت كانت الإجابة المقبولة   
    إذا كنت تريد جميع العناصر الموجودة داخل body ، وليس فقط العناصر الفرعية من المستوى الأول ، فيمكنك ببساطة استخدام getElementsByTagName :
    var elems = document.body.getElementsByTagName("*"); أو عبر querySelectorAll 
    var elements = document.querySelectorAll('*');  
  7. إجابة Ahmed Sadek Elamine Touahria سؤال في حساب وقت تنفيذ البرنامج بلغة بايثون كانت الإجابة المقبولة   
    هناك عدة طرق لحساب وقت تنفيذ البرنامج أو سكريبت معين أو حتى دالة 
    باستخدام الحزمة DateTime المشهورة .  from datetime import datetime # نحتفظ بوقت بداية التنفيذ start = datetime.now() # الكود الخاص بك a = 0 for i in range(1000): a += (i**100) # نحتفظ بوقت نهاية التنفيذ end = datetime.now() #ثم نطرح وقت نهاية التنفيذ من نهاية النتفيذ time_execution = (end - start).total_seconds() print(f"وقت تنفيذ البرنامج : {time_execution}s") باستخدام الحزمة timeit : هذا من شأنه أن يمنحنا وقت تنفيذ أي برنامج أو سكريبت. توفر هذه الوحدة طريقة بسيطة للعثور على وقت تنفيذ أجزاء صغيرة من الكود. يوفر الدالة timeit () لفعل الشيء نفسه. تقبل هذه الدالة timeit.timeit (stmt، setup، timer، number) 4 parameters:
    stmt وهو البيان(دالة او جزء من الكود ...) الذي تريد قياسه ؛ يتم تعيينه افتراضيًا على "pass". setup ، وهو الكود الذي تقوم بتشغيله قبل تشغيل stmt ؛ يتم تعيينه افتراضيًا على "pass". نستخدم هذا بشكل عام لاستيراد الوحدات المطلوبة للكود . timer، وهو كائن timeit.Timer ؛ عادةً ما يكون له قيمة افتراضية معقولة ، لذلك لا داعي للقلق بشأنها. number ، وهو عدد عمليات التنفيذ التي ترغب في تشغيلها stmt.
    مثال :
    # نقوم باستيراد الحزمة import timeit # رمز يتم تنفيذه مرة واحدة فقط # قبل stmt في timeit mysetup = "from math import sqrt" # رمز وقت التنفيذ # يقاس ... mycode = ''' def example(): mylist = [] for x in range(100): mylist.append(sqrt(x)) ''' # وهنا يبدأ شغل الدالة timeit() exec_time = timeit.timeit(stmt=mycode,setup=mysetup,number=1000000) print(f" وقت تنفيذ البرنامج : {exec_time}s")  
    كلاهما يفي بالغرض ولكن الحزمة التي تطبق جميع معايير الكود النضيف هي الدالة timeit .
  8. إجابة Ahmed Sadek Elamine Touahria سؤال في سؤال بخصوص pillow كانت الإجابة المقبولة   
    نعم المشكلة واجهني من قبل وقد قمت بحلها ، فقط يجب عليك تحويل الصورة الى وضع RGBA 
    بمعنى أوضح 
     
    flower = Image.open("flower.png").convert("RGBA") # قمنا بتحويل الصورة الى RGBA background = Image.new("RGB", (6000,6000), "white") background.paste(flower.rotate(0,translate=(50,-50),resample=Image.Resampling.BICUBIC), get_center(flower, background, y_margin=-50, x_margin=-15), flower.rotate(0,translate=(50,-50),resample=Image.Resampling.BICUBIC)) background.show()  
     
     
     
  9. إجابة Ahmed Sadek Elamine Touahria سؤال في كيف يمكن تطبيق فكرة JWT في فلاسك Flask؟ كانت الإجابة المقبولة   
    نعم بإستعمال مكتبة PyJWT تستطيع عمل مصادقة او authentication مع إطار العمل flask 
    الخطوات :
    نقوم بإنشاء ملف requirements.txt ونضع فيه الأتي : Flask-RESTful==0.3.8 PyJWT==1.7.1 Flask-SQLAlchemy==2.4.1  
    نفعل البيئة الإفتراضية source env/bin/activate  
    ثم نحمل المكتبات بهذا الأمر    pip install -r requirements.txt
    الآن ، انتهينا من جزء الإعداد. لنبدأ الآن في كتابة الكود الفعلي. قبل البدء بالكود ، أود أن أوضح شيئًا. سأكتب الكود بأكمله في ملف واحد ، أي نماذج قاعدة البيانات والمسارات معًا ، وهي ليست ممارسة جيدة وبالتأكيد لا يمكن إدارتها للمشاريع الأكبر. حاول الاحتفاظ بإنشاء ملفات أو وحدات بيثون منفصلة للطرق ونماذج قواعد البيانات.
    # جزء استيراد المكتبات from flask import Flask, request, jsonify, make_response from flask_sqlalchemy import SQLAlchemy import uuid # لإنشاء معرفات يصعب التعرف عليها from werkzeug.security import generate_password_hash, check_password_hash # استيراد jwt import jwt from datetime import datetime, timedelta from functools import wraps # انشاء flask objects app = Flask(__name__) # الإعدادات #نصيحة : لا تقم بوضع الرموز الحساسة في ملفات الكود # قم بالعمل مع مكتبة decouple app.config['SECRET_KEY'] = 'رمزك السري' # اسم قاعدة البيانات app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///Database.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True # إنشاء SQLALCHEMY object db = SQLAlchemy(app) # جدول المستخدم class User(db.Model): id = db.Column(db.Integer, primary_key = True) public_id = db.Column(db.String(50), unique = True) name = db.Column(db.String(100)) email = db.Column(db.String(70), unique = True) password = db.Column(db.String(80)) # نقوم بعمل ديكورايتور لتحقق من مصادقة jwt def token_required(f): @wraps(f) def decorated(*args, **kwargs): token = None # jwt يمرر في رأسية الإستعلام او headers if 'x-access-token' in request.headers: token = request.headers['x-access-token'] # نقوم بإرجاع رمز 401 اذا كان الرمز غير صالح if not token: return jsonify({'message ':'لا يوجد الرمز'}), 401 try: # فك تشفير التوكن data = jwt.decode(token, app.config['SECRET_KEY']) current_user = User.query\ .filter_by(public_id = data['public_id'])\ .first() except: return jsonify({ 'message' : ' خطأ في الرمز !!' }), 401 # نقوم بإرجاع المسخدمين النشطين او يمكنك ارجاع ما شأت return f(current_user, *args, **kwargs) return decorated # مسار المصادقة على المستخدم @app.route('/login', methods =['POST']) def login(): # ننشأ قاموس او dictionary # من أجل استعلام الفورم auth = request.form if not auth or not auth.get('email') or not auth.get('password'): # نرجع الرمز 401 اذا لم بقم بملأ البيانات كاملة return make_response( 'الرجاء ملأ البيانات', 401, {'WWW-Authenticate' : 'Basic realm ="يرجى تسجيل الدخول !!"'} ) user = User.query\ .filter_by(email = auth.get('email'))\ .first() if not user: # ارجاع 401 اذا كان المستخدم غير موجود return make_response( 'غير موجود', 401, {'WWW-Authenticate' : 'Basic realm ="المستخدم غير موجود !!"'} ) if check_password_hash(user.password, auth.get('password')): # إنشاء الرمز للتحقق token = jwt.encode({ 'public_id': user.public_id, 'exp' : datetime.utcnow() + timedelta(minutes = 30) }, app.config['SECRET_KEY']) return make_response(jsonify({'token' : token.decode('UTF-8')}), 201) # نرجع 403 اذا أخطأ في كلمة السر return make_response( 'خطأ', 403, {'WWW-Authenticate' : 'Basic realm ="كلمة المرور خاطئة !!"'} ) if __name__ == "__main__": app.run(debug = True)  
  10. إجابة Ahmed Sadek Elamine Touahria سؤال في كيف أربط موقعي التجاري بصفحتي التجارية على الفيسوك كانت الإجابة المقبولة   
    نعم يوجد api خاص بإضافة المنتجات والعناصر في الصفحات التجارية على الفيسبوك 
    إضافة منتج إلى FACEBOOK SHOP : لإرسال منتج أو تحديثه أو حتى حذفه نستعمل نقطة النهاية : /{catalog_id}/items_batch
    https://graph.facebook.com/<API_VERSION>/<CATALOG_ID>/items_batch?requests=<REQUESTS> مثال على request 
    curl \ -d @body.json \ -H "Content-Type: application/json" { "access_token": "<ACCESS_TOKEN>", "item_type": "PRODUCT_ITEM", "requests": [ { "method": "DELETE", // ممكن تكون CREATE UPDATE DELETE "data": { "id": "معرف المنتج" } }, { "method": "CREATE", "data": { "id": "retailer-2", "availability": "المخزون", "brand": "Nike", "google_product_category": "فئة المنتج", "description": "وصف المنتج", "image_link": "http://www.images.example.com/t-shirts/1.png", "title": "اسم المنتج", "price": "سعر المنتج + عملة المنتج بمعايير iso ", "condition": "حالة المنتج ", "link":"رابط المنتج", "item_group_id": "معرف مجموعة المنتج" } }, { "method": "UPDATE", "data": { "availability": "خارج المخزون", "id": "retailer-3", } } ] }  
  11. إجابة Ahmed Sadek Elamine Touahria سؤال في لماذا ref.current عبارة عن null في React.js؟ كانت الإجابة المقبولة   
    عادةً ما يرجع ref React غير محدد أو فارغ "undefined" عندما نحاول الوصول إلى خاصيته الحالية قبل عرض عنصر DOM المقابل. للتتخلص من هذا ، قم بالوصول إلى ref في  useEffect hooks  أو عند تشغيل حدث.
    مثال توضيحي
    import {useRef, useEffect} from 'react'; export default function App() { const ref = useRef(); console.log(ref.current); // undefined هنا غير معرف useEffect(() => { const el2 = ref.current; console.log(el2); // element here العنصر هنا }, []); return ( <div> <div ref={ref}> <h2>مرحبا بك في أكادمية حسوب</h2> </div> </div> ); } يمكن تمرير useRef hooks () بقيمة أولية كــ"argument". يقوم hook بإرجاع كائن ref القابل للتغيير الذي تتم تهيئة الخاصية الحالية له إلى argument التي تم تمريرها.
    إذا مررنا قيمة فارغة إلى hook ، فستكون خاصيته الحالية null إذا تم الوصول إليها على الفور.
    إذا حاولنا الوصول إلى الخاصية الحالية لـ ref مباشرة في المكون ، فسنحصل على undefined لأن ref لم يتم إعداده ولم يتم تقديم عنصر div.
    import {useRef, useEffect} from 'react'; export default function App() { const ref = useRef(); console.log(ref.current); // undefined هتا المرجع غير معرف useEffect(() => { const el2 = ref.current; console.log(el2); // هنا العنصر }, []); const handleClick = () => { console.log(ref.current); // مرجع العنصر }; return ( <div> <div ref={ref}> <h2>مرحبا بك في أكادمية حسوب</h2> </div> <button onClick={handleClick}>حسنا</button> </div> ); }  
  12. إجابة Ahmed Sadek Elamine Touahria سؤال في sql or nosql كانت الإجابة المقبولة   
    الفرق بين SQL و NoSQL :
    المتطلبات الأساسية - SQL ، NoSQL
    عندما يتعلق الأمر باختيار قاعدة بيانات ، فإن أكبر القرارات هي اختيار بنية بيانات علائقية (SQL) أو غير علائقية (NoSQL). في حين أن كلا قاعدتي البيانات هما خياران قابلان للتطبيق ، لا تزال هناك بعض الاختلافات الرئيسية بين الاثنين التي يجب على المطورين وضعها في الاعتبار عند اتخاذ القرار.
    التسمية
    تسمى قواعد بيانات SQL في المقام الأول باسم قواعد البيانات العلائقية (RDBMS) ؛ بينما تسمى قاعدة بيانات NoSQL أساسًا بقاعدة بيانات غير علائقية أو موزعة. اللغة -
    تحدد قواعد بيانات SQL لغة الاستعلام المهيكلة (SQL) وتعالجها. إن رؤية هذه اللغة من جانب ما هو أمر قوي للغاية. يعد SQL أحد أكثر الخيارات المتاحة تنوعًا والأكثر استخدامًا مما يجعله خيارًا آمنًا خاصة للاستعلامات المعقدة الكبيرة. لكن من ناحية أخرى يمكن أن تكون مقيدة. يتطلب منك SQL استخدام المخططات المحددة مسبقًا لتحديد بنية بياناتك قبل التعامل معها. يجب أيضًا أن تتبع جميع بياناتك نفس البنية. قد يتطلب ذلك إعدادًا مسبقًا كبيرًا مما يعني أن التغيير في الهيكل سيكون صعبًا ومزعجًا لنظامك بأكمله.
    -- تحتوي قاعدة بيانات NoSQL على مخطط ديناميكي للبيانات غير المهيكلة. يتم تخزين البيانات بعدة طرق مما يعني أنها يمكن أن تكون موجهة نحو المستند أو موجهة نحو الأعمدة أو قائمة على الرسم البياني أو منظمة كمخزن KeyValue. تعني هذه المرونة أنه يمكن إنشاء المستندات دون الحاجة إلى بنية محددة أولاً. كما يمكن أن يكون لكل وثيقة هيكلها الفريد الخاص بها. يختلف بناء الجملة من قاعدة بيانات إلى أخرى ، ويمكنك إضافة حقول كما تذهب. قابلية التوسع -
    في جميع الحالات تقريبًا ، تكون قواعد بيانات SQL قابلة للتطوير عموديًا. هذا يعني أنه يمكنك زيادة الحمل على خادم واحد عن طريق زيادة أشياء مثل ذاكرة الوصول العشوائي أو وحدة المعالجة المركزية أو SSD. ولكن من ناحية أخرى ، فإن قواعد بيانات NoSQL قابلة للتطوير أفقيًا. هذا يعني أنك تتعامل مع المزيد من حركة المرور عن طريق التجزئة أو إضافة المزيد من الخوادم في قاعدة بيانات NoSQL الخاصة بك. إنه مشابه لإضافة المزيد من الطوابق لنفس المبنى مقابل إضافة المزيد من المباني إلى الحي. وبالتالي يمكن أن تصبح NoSQL في النهاية أكبر وأكثر قوة ، مما يجعل قواعد البيانات هذه الخيار المفضل لمجموعات البيانات الكبيرة أو المتغيرة باستمرار. بنية -
    قواعد بيانات SQL هي قواعد بيانات قائمة على الجدول على الجانب الآخر ، تكون قواعد بيانات NoSQL إما أزواج ذات قيمة رئيسية ، أو قواعد بيانات قائمة على المستندات ، أو قواعد بيانات بيانية ، أو مخازن واسعة الأعمدة. هذا يجعل قواعد بيانات SQL العلائقية خيارًا أفضل للتطبيقات التي تتطلب معاملات متعددة الصفوف مثل نظام المحاسبة أو الأنظمة القديمة التي تم إنشاؤها لهيكل علائقي.  متابعة الخاصية -
    تتبع قواعد بيانات SQL خصائص ACID (الذرية والاتساق والعزل والمتانة) بينما تتبع قاعدة بيانات NoSQL نظرية برويرز CAP (الاتساق والتوافر وتحمل التقسيم). الدعم -
    يتوفر دعم كبير لجميع قواعد بيانات SQL من مورديها. يوجد أيضًا الكثير من الاستشارات المستقلة التي يمكنها مساعدتك في قاعدة بيانات SQL لعمليات النشر على نطاق واسع جدًا ، ولكن بالنسبة لبعض قواعد بيانات NoSQL ، لا يزال يتعين عليك الاعتماد على دعم المجتمع ولا يتوفر سوى خبراء خارجيين محدودون لإعداد ونشر NoSQL على نطاق واسع عمليات النشر. بالنسبة لعالم الشغل فكل سوق وله تقنياته الخاصة بالإضافة الى قابلية الإستخدام من طرف الإطار الذي تعمل عليه ، وأيضا كل مشروع وقاعدة البيانات الذي تناسبه .
  13. إجابة Ahmed Sadek Elamine Touahria سؤال في ما فائدة دالة lambda في بايثون ومتى أستعملها؟ كانت الإجابة المقبولة   
    في Python ، الدالة المجهولة هي دالة يتم تعريفها بدون اسم.
    بينما يتم تحديد الدوال العادية باستخدام الكلمة الأساسية def في Python ، يتم تحديد الوظائف المجهولة باستخدام الكلمة الأساسية lambda.
    ومن ثم ، فإن الدوال المجهولة تسمى أيضًا وظائف لامدا.
    كيف تستخدم دوال لامدا في بايثون؟
    دالة lambda في لغة python لها الصيغة التالية.
    lambda arguments: expression يمكن أن تحتوي دوال Lambda على أي عدد من الوسيطات ولكن تحتوي على تعبير واحد فقط. يتم تقييم التعبير وإعادته. يمكن استخدام وظائف Lambda أينما كانت الكائنات الوظيفية مطلوبة.
    مثال على دالة Lambda في لغة بايثون :
    فيما يلي مثال على دالة lambda التي تضاعف قيمة الإدخال. 
    #برنامج لإظهار استخدام دالة لامدا double = lambda x: x * 2 print(double(5)) الإخراج
    10 في البرنامج أعلاه ، lambda x: x * 2 هي وظيفة lambda. هنا x هي الوسيطة و x * 2 هي التعبير الذي يتم تقييمه وإعادته.
    هذه الدالة ليس لها اسم. تقوم بإرجاع كائن الوظيفة الذي تم تعيينه لمضاعفة المعرف. يمكننا الآن تسميتها دالة عادية.
    double = lambda x: x * 2 هو تقريبا مثل :
    def double(x): return x * 2 استخدامات دالة Lambda في لغة بايثون :
    نستخدم دوال لامدا عندما نحتاج إلى وظيفة غير معروفة لفترة قصيرة من الزمن.
    في بايثون ، نستخدمها عمومًا كوسيطة لوظيفة ذات ترتيب أعلى (وظيفة تأخذ وظائف أخرى كوسائط). تُستخدم وظائف Lambda جنبًا إلى جنب مع الوظائف المضمنة مثل ()filter() , map .. وما إلى ذلك.
    مثال إستخدام lamda مع filter : # Program to filter out only the even items from a list my_list = [1, 5, 4, 6, 8, 11, 3, 12] new_list = list(filter(lambda x: (x%2 == 0) , my_list)) print(new_list) [4, 6, 8, 12] # output  
  14. إجابة Ahmed Sadek Elamine Touahria سؤال في ما الفرق بين الدالة exit والتابع sys.exit في بايثون Python؟ كانت الإجابة المقبولة   
    عند تنفيذ برنامج في Python ، يتم تنفيذ الكود على التوالي حتى النهاية. ومع ذلك ، قد تكون هناك مناسبات نطلب فيها إنهاء البرنامج في وقت أقرب مما كان متوقعًا. هذا هو المكان الذي تظهر فيه أوامر الخروج المختلفة في الصورة.
    على الرغم من أن لغة Python هي لغة برمجة بسيطة ، إلا أنها قد تكون معقدة بعض الشيء في بعض الأحيان. إحدى هذه الحالات هي استخدام أنواع مختلفة من أوامر الخروج في بايثون
     لن يتم تنفيذ الكود الذي يتبع بعد الأمر exit ().
    ملاحظات : 
    يمكنك التفكير في exit () كاسم مستعار لـ quit () (أو العكس) في Python. هم ببساطة يتعايشون لجعل بايثون أكثر سهولة في الاستخدام. ومع ذلك ، فإنه ليس من الممارسات الجيدة استخدام quit () و exit () في كود الإنتاج ويجب حجزها فقط للاستخدام في المترجم الفوري. يُنشئ الأمر exit () الرسالة التالية عند طباعته:  "Use exit() or Ctrl-D (i.e. EOF) to exit" مثال 
    for no in range(15, 30): if no > 25: print("\n", exit) #طباعة رسالة الخروج # عندما تصبح قيمة 10 ، يضطر البرنامج للخروج exit() print(no, end=" ") النتيجة
    15 16 17 18 19 20 21 22 23 24 25 Use exit() or Ctrl-Z plus Return to exit  
    يمكنك استدعاء sys.exit () للخروج من كود Python بحالة الخروج مثل arg. يمكن أن تكون arg أي شيء مثل عدد صحيح أو كائن آخر - يتم تعيين arg الافتراضية على الصفر ، مما يشير إلى إنهاء ناجح. يمكنك تعيين الوسيطة إلى قيمة غير صفرية للإشارة إلى إنهاء غير طبيعي للكود.
    ملاحظات : 
    عندما نستخدم الأمر () sys.exit ، فإنه يرفع استثناء SystemExit . على طول هذه الخطوط ، يمكنك الإمساك به =لإغلاق المخارج المبكرة والقيام بأنشطة التنظيف عندم الحاجة يمكن اعتبار sys.exit مجرد اختصار لزيادة SystemExit (s) import sys try: sys.exit() print("لن يتم تنفيذ هذا السطر!") except SystemExit: print("أنهى SystemExit Exception البرنامج!") finally: print("أداء أنشطة التنظيف!") output
    SystemExit Exception terminated the program! Perform Cleanup Activities!  

×
×
  • أضف...