python
-
הרעיון בגדול זה שאם מפעילים ישירות את הסקריפט זה מריץ את מה שבתוך התנאי, אבל אם עושים לו import מסקריפט אחר אז הוא לא מריץ את זה.
למה זה שימושי?
נניח שיש סקריפט שמכיל כמה פונקציות ומבצע פעולה מסויימת כשמריצים אותו, עכשיו אם משהו ירצה להשתמש רק בפונקציות של הסקריפט מבלי לבצע את הפעולה שהסקריפט עושה, אז כשהוא יעשה import כל הסקריפט עצמו ירוץ, דבר שהוא לא רוצה.לכן בדרך כלל מכניסים את הפוקציה הראשית לתוך התנאי הזה, כך שהיא תתבצע רק אם הפעילו את הסקריפט עצמו ולא אם עשו לו import מסקריפט אחר.
-
@שרה-רחל
א.
תיקון:if __name__=='__main__': print("hello world")
ב.
דוגמה פשוטה לדבר:
נניח שmain.py נמצא בתוך חבילה ששמה example
main.py:def example(*args): print(*args) example('hello world'')
עכשיו כשאני רוצה לייבא את הפונקציה
example
בקוד אחר אני עושה ככה:
אוי.. אני רק רציתי את הפונקציה, זה מאוד לא נוח שעכשיו זה גם מריץ לי את הפונקציה
example('hello world')
אבל אני כן הייתי רוצה לייצא את החבילה שלי בצורה כזאת שיהיה אפשר להריץ אותה בצורה עצמאית, גם לא בשביל לייצא את הפונקציות.סתם מעניין אותי לדעת, מה זה
__name__
?אני אשנה את main.py
def example(*args): print(*args) example(__name__)
עכשיו כשאני אייבא את הפונקציה, זה ידפיס לי את
__name__
אהה.. זה השם של החבילה והמודול שלי, אבל מה יקרה אם אני אריץ את הקובץ ישירות עם פייתון?
אם כך זה פשוט אני רק אבדוק שאני לא מריץ את החבילה ישירות, אני כבר יודע איך עושים את זה:
def example(*args): print(*args) if __name__ == '__main__': example(__name__)
ועכשיו אבדוק:
אהה יופי, בדיוק מה שרציתי.