לדלג לתוכן

פייתון/פייתון גרסה 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__'