דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. python

python

מתוזמן נעוץ נעול הועבר תכנות
3 פוסטים 3 כותבים 185 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ש מנותק
    ש מנותק
    שרה רחל
    כתב ב נערך לאחרונה על ידי
    #1
    if __name__=__main__
    

    מה הצורך בשורה זו?
    מבינה שזה בודק האם זה הקובץ הנוכחי או קריאה מקובץ מיובא
    אבל איזו בעיה הוא פותר?

    תודה

    קומפיונטק חגיח 2 תגובות תגובה אחרונה
    0
    • קומפיונטק מנותק
      קומפיונטק מנותק
      קומפיונט
      השיב לשרה רחל ב נערך לאחרונה על ידי
      #2

      @שרה-רחל

      הרעיון בגדול זה שאם מפעילים ישירות את הסקריפט זה מריץ את מה שבתוך התנאי, אבל אם עושים לו import מסקריפט אחר אז הוא לא מריץ את זה.

      למה זה שימושי?
      נניח שיש סקריפט שמכיל כמה פונקציות ומבצע פעולה מסויימת כשמריצים אותו, עכשיו אם משהו ירצה להשתמש רק בפונקציות של הסקריפט מבלי לבצע את הפעולה שהסקריפט עושה, אז כשהוא יעשה import כל הסקריפט עצמו ירוץ, דבר שהוא לא רוצה.

      לכן בדרך כלל מכניסים את הפוקציה הראשית לתוך התנאי הזה, כך שהיא תתבצע רק אם הפעילו את הסקריפט עצמו ולא אם עשו לו import מסקריפט אחר.

      תגובה 1 תגובה אחרונה
      5
      • חגיח מנותק
        חגיח מנותק
        חגי
        השיב לשרה רחל ב נערך לאחרונה על ידי
        #3

        @שרה-רחל
        א.
        תיקון:

        if __name__=='__main__':
            print("hello world")
        

        ב.
        דוגמה פשוטה לדבר:
        נניח שmain.py נמצא בתוך חבילה ששמה example
        9dfb776b-9458-447c-ab0b-bafb5ac6f8fe-image.png
        main.py:

        def example(*args):
            print(*args)
        
        example('hello world'')
        

        עכשיו כשאני רוצה לייבא את הפונקציה example בקוד אחר אני עושה ככה:
        917aa3f1-85ab-45e6-8cd2-3bab59cdfdd7-image.png

        אוי.. אני רק רציתי את הפונקציה, זה מאוד לא נוח שעכשיו זה גם מריץ לי את הפונקציה example('hello world') אבל אני כן הייתי רוצה לייצא את החבילה שלי בצורה כזאת שיהיה אפשר להריץ אותה בצורה עצמאית, גם לא בשביל לייצא את הפונקציות.

        סתם מעניין אותי לדעת, מה זה __name__?

        אני אשנה את main.py

        def example(*args):
            print(*args)
        
        example(__name__)
        

        עכשיו כשאני אייבא את הפונקציה, זה ידפיס לי את __name__
        5be115c3-0392-4d95-96c1-d0eb451a83f9-image.png
        אהה.. זה השם של החבילה והמודול שלי, אבל מה יקרה אם אני אריץ את הקובץ ישירות עם פייתון?
        74e8bf0d-82c8-4a9b-a81d-54e38cf3d06a-image.png

        אם כך זה פשוט 🙂 אני רק אבדוק שאני לא מריץ את החבילה ישירות, אני כבר יודע איך עושים את זה:

        def example(*args):
            print(*args)
        
        if __name__ == '__main__':
            example(__name__)
        

        ועכשיו אבדוק:
        611123ed-b802-47c6-9f38-2e53ebd17ae6-image.png

        אהה יופי, בדיוק מה שרציתי.

        תגובה 1 תגובה אחרונה
        8

        בא תתחבר לדף היומי!
        • התחברות

        • אין לך חשבון עדיין? הרשמה

        • התחברו או הירשמו כדי לחפש.
        • פוסט ראשון
          פוסט אחרון
        0
        • דף הבית
        • קטגוריות
        • פוסטים אחרונים
        • משתמשים
        • חיפוש
        • חוקי הפורום