بعض الشرح عن __name__ و __main__ في بايثون

بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته



بعض الشرح عن __name__ و __main__ في بايثون .

 




لنبدأ :

 هذا ما سنتكلم عنه بالتحديد سطر if و __name__ ...إلخ



 هذا هو خط سير البرنامج لنتصور الأمر على انه صندوق بداخله أكواد وهذا هو الصندوق الأساسي (main) والذي يتم تنفيذ التعليمات داخله ,نلاحظ أن الصندوق الأساسي إسمه بالتحديد هكذا __main__ وممكن الحصول على إسمه من خلال متغير إسمه __name__ وهذا المتغير وفرته لنا لغة البرمجة بايثون أي يأتي بشكل مضمن معها ولا يجعل إسمه الغريب قليلا يربككم.



نلاحظ ان هذا المتغير يحمل قيمة هي نص عادي ,أي ان الصندوق الأساسي للبرنامج إسمه __main__ الامر بهذه البساطة ذات الشيء مثلا عندما تضع متغير لإسمك مثلا  "myname="youcef .


الان لنتصور الدالة هي صندوق أخر داخل الصندوق الأساسي .


 نلاحظ ذات المبدأ حصلنا أيضا على إسم الدالة التي كتبتها  والتي سميتها print_hello .



 الان بعد توضيح بعض الأمور نرجع للموضوع الأساسي بكل بساطة معنى اخر سطرين إذا كان المتغير __name__  يحمل قيمة  __main__ بمعنى أخر إذا شغلنا البرنامج بشكل مباشر نفذ دالة ()ffffff
لأن عند تشغيل البرنامج أو السكربت أو ملف الكود بشكل مباشر نكون داخل الصندوق الأساسي أي ان قيمة __name__ ستكون __main__ لهذا إذا صح التعبير نحن نكون بالفعل داخل الصندوق الأساسي لهذا الملف أو السكربت في حال شغلناه بشكل مباشر ولم نستدعيه من مكان أخر عن طريق import .


 نلاحظ إذا غيرنا __main__ لشيء اخر لن يتم تنفيذ دالة ()ffffff لأن قيمة متغير __name__ لن تكون print_hello بل ستكون __main__ .


أظن أصبح الأمر واضح .





 الأن أحد أسباب لماذا قد نحتاج إضافة if و __name__ و...إلخ لنفترض اننا لم نستخدمهم ولنفترض أيضا أننا كتبنا برنامج فيه أيضا دوال سيتم إستدعائها داخل برامج أخرى ,الذي سيحصل أنه  بمجرد إستدعاء ملف البرنامج من سكربت أو برنامج أخر سيتم تنفيذ كل شيء ومنها دوال print وهذا أمر ليس جيد , اﻷمر بسيط معنا الأن لاكن تصور مثلا أن بدل دوال print هناك أوامر إنشاء نافذة وأزرار و...إلخ .






 لا تربككم الدلة التي إسمها ()main هي دالة مثلها مثل غيرها  :D .


الحل كما في الصور في الأعلى كلها بذات المبدأ بشكل بسيط إذا تم تشغيل السكربت بشكل مباشر أي __name__ تساوي __main__ نفذ المطلوب قد يكون إستدعاء دوال أخرى او دالة واحدة أو التنفيذ المباشر أو أي شيء نحتاجه .



أخيرا عرفنا المبدأ كيف يتم الامر بعض النظر عن صحة بعض المصطلحات التي إستخدمتها من عدمه  مثل الصندوق و...إلخ وأعطيت مثل بسيط لماذا قد نستخدم هذه الصيغة إلى اللقاء إن شاء الله .


شارك الموضوع

مواضيع ذات صلة

التسميات

2016 (1) 23 (1) 24 (3) 25 (1) 26 (1) إتصال (1) إختراق (2) أدة (1) أدوات (1) إرسال (1) أرش (1) إسترجاع (1) إستعلام (1) أشياء (3) أشياء تفعلها (4) إصلاح (6) إصلاحrealtek (1) إضافات (1) إضافة (1) أعجوبة (1) أعجوية (1) إعداد (1) إقاف (2) أقسام (1) ألعاب (2) الفرق (1) الفلاشة (1) القسم هوم (1) الكتابة بالعربية (1) إلى جانب (1) أندرويد (1) إنشاء مستودع (1) أيات (1) أيزو (1) أيقومات (1) أيقونات (1) ايقونات (2) باتش (1) بارامتر (1) بايثون (14) برامج (45) برامج إسلامية (2) برنامج (18) برودباند (1) بعد (3) بعد التثبيت (4) بلوتوث (1) بناء (1) بيئة عمل (1) تثبيت (24) تجهيز (2) تجهيو من دون (2) تحزيم (2) تحقق (1) تحويل (1) تخصيص (5) ترجمة (2) ترقية (1) تسجيل الشاشة (1) تشغيل (3) تعريف (13) تعطيل (2) تعلم (6) تفعلها (3) تفعيل (2) تقطع الأحرف (1) تقعيل (1) تنزيل (2) تورنت (1) توسعة (1) ثيم (5) ثيمات (1) جافا (1) جماليات (7) جنوم (1) حجم (1) حرق (2) حزمة (1) حل (2) دالة (1) دورة (1) ريدهات (2) سكربت (2) شرح (10) صورة متحركة (1) فايرفوكس (1) فصل (1) فلاشة (3) فيدورا (25) فيدورا بالعربي (1) قاموس (1) كالي (2) كتاب (2) كتب (2) كرت (1) كروت الشاشة (1) كلمة المرور (2) كورس (1) كورورا (1) لعبة (1) لينكس (2) لينكسو (1) ماهو (3) متغير البيئة (1) مجانا (1) محاكات (2) محاكي (1) محمل الإقلاع إصلاح (1) مستودعات (1) مشكلة (2) ملف نصي (1) من إصدار (1) نظام ملفات (1) نمط (2) نواة (1) هجين (4) وايرلس (1) وهمي (2) ويندوز (2) active (2) add (1) after (3) alias (1) andoid studio (1) android (1) android studio (1) Apache (1) arboot (1) arboot fix (1) arch (3) archiso (1) arfedy (1) atari (1) atom (1) ayat (1) bicon (1) blivet (1) blivet-gui (1) bluetooth (1) book (2) books (2) bootloader fix (1) broadband (1) broadcom (1) broadwayd (1) build (2) builddep (1) bumblebee (1) bumbleebe (2) burn (2) byzanz (1) c# (1) camera (1) cannot open display (1) cannot open display: :0 (1) ccna (1) cd (2) centos (1) change (1) chsh (1) cisco (1) clion (1) clone (1) code.org (1) connect (1) contra (1) convert (1) copr (1) could not connect to the debugger (1) cpu (1) cpufreq (1) createrepo (1) csharp (1) curlew (1) custom (2) dbus (1) dd (1) defragment (2) desktop (1) desktop entry (1) dictionary (1) disks (1) dnf (12) do (3) docker (1) download (2) downloads manager (1) dply (1) DRI PRIME (1) driver (8) dukto (1) e2fsck (1) efi (4) el forkane (1) elforkane (1) elif (1) emergency (3) emergency mode (3) enable (2) error mounting /dev/sd (1) ext4 (1) extend (1) extensions (2) fakenes (1) fast startup (2) fceux (1) fedora (37) fedora 25 alpha (1) fedora cloude (1) fedoraوفيدورا (1) fedy (1) fgmac (2) fgmac-24 (1) file (1) firefox (2) fix (8) flash mem (1) flash memory (2) flashplayer (1) flatpak (2) fpaste (1) free (1) freebsd (1) function (1) game (3) games (1) gedit (1) genymotion (1) gettext (1) gif (1) gimp (1) github (5) github.io (1) glibc-common (1) gmaclinux (2) gnome (8) gnome disk (1) gnome shell (12) gnome terminal (1) gnome-disks (1) gnu (1) goldendict (1) google web designer (1) gradio (1) group (1) grub (5) grub2 (1) gtk (2) gtk+ (1) hack (2) hash (3) hdmi (3) hibernate (1) home (2) hosspot (1) hybrid (2) icon (2) icons (3) ide (1) if (1) install (27) installf (9) installing (3) intellij idea (1) iso (1) java (3) jdk (2) jetbrains (1) jetbrains toolbox (1) kali (2) kernel (1) kernel parameters (1) key (1) kickstarts (2) korora (1) krita (1) kvm (1) kvm switches (1) learn (1) legacy (1) legacy bios (3) libreoffice (2) life is trange (1) linux (7) lv (1) lvm (2) mac (4) macros (1) mageia (1) MariaDB and PHP Lamp Server (1) mate terminal (1) mbr (1) md5sum (1) mirro (1) mo (1) mono (2) monodevelop (2) mount (1) mp4 (1) multi screen (1) natron (1) nautilus (2) nes (1) netbeans (1) netcut (1) nintendo (1) ntfs (2) nvidia (7) objdesktop (1) ojuba (2) oop (1) opensuse (1) opera (1) optirun (2) oracle (1) os.path (1) package (1) page (1) pages (1) pantheon (1) parameter (1) parameters (1) password (2) patch (1) path (2) pdf (1) peek (1) photoshop (1) phpstorm (1) plugin (3) plugins (1) plymouth (1) po (1) polkit (1) PostinstallerF (1) pot (1) powerline (1) primary display (1) primus (1) primusrun (1) programs (3) put (1) pv (1) pycharm (2) pygobject (1) pygtk (1) python (28) qdbus (1) qemu (2) qemu-kvm (1) query (1) radio (1) raspberry pi (4) raspbian (2) reclaim space (2) record (1) redhat (2) remix (1) remix os (1) repo (4) repofrompath (1) resize2fs (1) rhel (1) rpm (5) rpmbuild (1) rtl8188ee (1) rtl8192c (1) rtl8192ce (1) rtl8192cu (1) rtl8192de (1) rtl8192ee (1) rtl8192se (1) rtl8723ae (1) rtl8723be (1) rtl8723com (1) rtl8821ae (1) rubymine (1) salix (1) scratch (2) scratch2.scratch 2 (1) script (2) seconday display (1) self (1) send (1) sha1256sym (1) share desktop (1) shortcut (1) shutter (1) skel (1) skel ماهو (1) skype (1) skype.برامج (1) slackware (1) soundcloud (1) source code (1) spec (2) sqlmap (1) ssh (3) sshd (2) st-trans (1) steam (2) su (1) sudo (2) sudoers (1) swap (2) switch (1) Switchable Graphics (1) synergy (1) teamviewer (1) terminal (2) theme (4) things (3) to (4) tor (2) tor browser (1) torrent (1) transfer closed with 736700 bytes remaining to read (1) translation (1) turn off (2) tuxcut (1) txt (1) ubuntu (1) uefi (5) unable to mount location (1) unity (1) unity3d (1) upgrade (1) usb (1) useradd (2) utf-8 (1) vega (1) vg (1) vgaوتبديل (1) vi (1) vim (1) vino (1) virtual (1) virtual box (1) virtualbox (2) vmware (3) vnc server (1) vokoscreen (1) webstorm (1) wifi (1) windows (3) windows-1256 (1) X Error: BadAccess (1) X Error: BadDrawable (1) yum (2) zeal (1) zealdocs (1)