פייתון/פייתון גרסה 3/פונקצית main

פונקצית main מגדירה לפיתון אילו הרצאות ופונקציות להריץ תחילה.

import random import time

class Ball:

   def __init__(self, id, position):
       self.id = id
       self.position = position
   def move(self):
       self.position += random.randint(-1, 1)

def binary_search(balls, target_id):

   left, right = 0, len(balls) - 1
   while left <= right:
       mid = (left + right) // 2
       if balls[mid].id == target_id:
           return mid
       elif balls[mid].id < target_id:
           left = mid + 1
       else:
           right = mid - 1
   return -1

def main():

   # יצירת כדורים עם מזהים ומיקומים אקראיים
   balls = [Ball(id, random.randint(0, 100)) for id in range(10)]
   balls.sort(key=lambda ball: ball.id)  # מיון הכדורים לפי מזהה
   print("כדורים במצב התחלתי:")
   for ball in balls:
       print(f"ID: {ball.id}, Position: {ball.position}")
   target_id = int(input("הכנס מזהה כדור לחיפוש: "))
   index = binary_search(balls, target_id)
   if index != -1:
       print(f"כדור עם מזהה {target_id} נמצא במיקום {balls[index].position}")
   else:
       print(f"כדור עם מזהה {target_id} לא נמצא")
   # הדמיית תנועת הכדורים
   for _ in range(10):
       for ball in balls:
           ball.move()
       time.sleep(1)
       print("מצב הכדורים לאחר תנועה:")
       for ball in balls:
           print(f"ID: {ball.id}, Position: {ball.position}")

if __name__ == "__main__":

   main()

הפונקצית Main

עריכה

ניצור שני קבצים באותה תיקיה.

הראשון עם השם "first_file עם הכיתוב:

print(__name__)

השני עם השם "second_file עם הכיתוב:

import first_file
print('hello')

נריץ את שתי התכניות. התכנית הראשונה הדפיסה:

__main__

מפני שהקובץ הנוכחי אותו אנו מרצים מזוהה על ידי פיתון כקובץ ה-main, הקובץ הראשון שפיתון מריצה.

הקובץ השני ידפיס:

first_file
hello

כי הוא קובץ שמייבא את קובץ ה-"main" ולכן מריץ תחילה את הקובץ הראשון, first_file ואחר כך את יתר הפקודות.

הרצה יחידה של Main

עריכה

אם נרצה שפיתון תריץ תכנית מסוימת ראשונה, אך לא נרצה כי תריץ מחדש, בקובץ המיבא את אותה תכנית, שוב רק מפני שהפנו אל קובץ זה, נוסיף את הפקודה:

if __name__ == "__main__":
    main()

כלומר רק במידה והשם של הקובץ הנוכחי שווה הוא main תריץ את main, אחרת, הרץ את הקובץ.


נעדכן את התכנית:

הראשון עם השם "first_file בכיתוב:

def main():
    print(__name__)

if __name__ == "__main__":
    main() #run main

השני עם השם "second_file נותיר ללא שינוי.

הפעם כשנקרא אל הפונקציות נקבל אותה תוצאה לקובץ הראשון:

__main__

עבור הקובץ השני:

hello

ראה גם

עריכה
  1. Python Main Function with Examples: Understand __main__
  2. Python Tutorial: if __name__ == '__main__'