logo

EOL בפייתון

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

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

במדריך הבא, נגלה את אחת משגיאות התחביר ב-Python המכונה EOL, המועלת בדרך כלל כאשר אנו מנסים לסרוק מחרוזת מילולית.

הבנת המשמעות של EOL

עלינו להבין את המשמעות של EOL ביעילות לפני פתרון בעיה. EOL הוא קיצור של 'סוף קו'. שגיאת EOL מסמלת שהמתורגמן של Python הגיע לסוף השורה תוך כדי סריקת המחרוזת המילולית.

מילולי המחרוזת, הידועים גם כקבועים, חייבים להיות מוקפים במרכאות בודדות או כפולות. הגעה ל'סוף השורה' כאשר אנו מנסים לסרוק פירושה שהגענו לתו האחרון של המחרוזת ולא נתקלנו במרכאות הסיום.

הבה נבחן דוגמה בסיסית המדגימה כיצד מועלית שגיאת EOL.

דוגמא:

 # defining a string value my_string = 'This is my string literal, and it is broken... # printing the string value print('String:', my_string) 

תְפוּקָה:

 File 'D:Python	ernarypy.py', line 2 my_string = 'This is my string literal, and it is broken... ^ SyntaxError: EOL while scanning string literal 

הֶסבֵּר:

בקטע הקוד לעיל, הגדרנו מחרוזת מילולית; עם זאת, פספסנו מרכאות בסוף המחרוזת, מה שהעלה את שגיאת תחביר נקרא EOL בזמן הדפסת המחרוזת הזו עבור המשתמשים.

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

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

תיקון 'שגיאת תחביר: EOL בזמן סריקת מחרוזת מילולית'.

אנו יכולים להיתקל בשגיאה זו בארבעה מצבים עיקריים תוך כדי עבודה על תוכנית Python. ארבעת המצבים העיקריים הללו הם כפי שמוצג להלן:

  1. חסרה מרכאות הסיום
  2. שימוש במרכאות הסיום השגויות
  3. מחרוזת מתיחה מתמדת למספר קווים
  4. שימוש בקו נטוי לאחור לפני המרכאות הסיום

בואו נתחיל להבין כל אחד מהמצבים הללו וננסה לעקוף אותם.

חסרה מרכאות הסיום

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

דוגמא:

 # defining a string value my_string = 'This is my string literal, and it is broken... # printing the string value print('String:', my_string) 

הֶסבֵּר:

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

הבה נבחן כעת את התחביר הבא כפתרון לבעיה שלעיל.

פִּתָרוֹן:

 # defining a string value my_string = 'This is my string literal, and it is broken...' # printing the string value print('String:', my_string) 

תְפוּקָה:

 String: This is my string literal, and it is broken... 

הֶסבֵּר:

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

שימוש במרכאות הסיום השגויות

אנחנו יכולים לעשות שימוש '' בנוסף ל '' על מנת להקיף קבוע מיתר מסוים בפייתון. עם זאת, מתכנת משתמש לעתים קרובות במרכאות שגויות בסוף ערך המחרוזת. מצב כזה גורם לתוכנית להעלות שגיאת תחביר במונחים של EOL.

הבה נבחן מצב כזה בדוגמה הבאה:

דוגמא:

 # defining a string value my_string = 'This is my string literal with wrong quotation mark at the end.' # printing the string value print('String:', my_string) 

תְפוּקָה:

 File 'D:Python	ernarypy.py', line 2 my_string = 'This is my string literal with wrong quotation mark at the end.' ^ SyntaxError: EOL while scanning string literal 

הֶסבֵּר:

בקטע הקוד שלמעלה, השתמשנו במרכאות השגויות בסוף ערך המחרוזת שגורם לשגיאת התחביר.

נוכל להימנע מבעיה כזו על ידי שימוש במרכאות התואמות בסוף המחרוזת, כפי שמוצג בקטע הקוד הבא.

פִּתָרוֹן:

 # defining a string value my_string = 'This is my string literal with wrong quotation mark at the end.' # printing the string value print('String:', my_string) 

תְפוּקָה:

 String: This is my string literal with wrong quotation mark at the end. 

הֶסבֵּר:

בקטע הקוד שלמעלה, כפי שאנו יכולים לראות, השתמשנו במרכאות התואמות בסוף המחרוזת שעוזר לנו להימנע מכל שגיאת EOL.

מחרוזת מתיחה מתמדת למספר קווים

ישנם מתכנתי Python מתחילים שונים שעושים את הטעות של למתוח הצהרות ליותר משורה אחת. Python לוקח בחשבון שורה חדשה כסוף ההצהרה, בניגוד לשפות אחרות כמו C++ ו-Java שמתחשבות ';' כסוף הצהרות.

הבה נבחן דוגמה המדגימה את אותה בעיה.

דוגמה לבעיה:

 # defining a string value my_string = 'This is my string literal... this is my new line' # printing the string value print('String:', my_string) 

תְפוּקָה:

 File 'D:Python	ernarypy.py', line 2 my_string = 'This is my string literal... ^ SyntaxError: EOL while scanning string literal 

הֶסבֵּר:

שמור סרטון יוטיוב vlc

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

עם זאת, אנו יכולים לפתור בעיה זו באמצעות שיטות שונות כפי שמוצג להלן:

פתרון 1: שימוש ב-' ' כדי לספק את ההשפעה של קו חדש לקבוע המחרוזת

 # defining a string value my_string = 'This is my string literal...
 this is my new line' # printing the string value print('String:', my_string) 

תְפוּקָה:

 String: This is my string literal... this is my new line 

הֶסבֵּר:

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

עכשיו הבה נבחן פתרון אחר.

פתרון 2: שימוש במרכאות משולשות, ''' או ''' לאחסון קבועי מחרוזות מרובות שורות

 # defining a string value my_string = '''This is my string literal... this is my new line''' # printing the string value print('String:', my_string) 

תְפוּקָה:

 String: This is my string literal... this is my new line 

הֶסבֵּר:

בקטע הקוד שלמעלה, השתמשנו במרכאות המשולשות, ''' על מנת לאחסן קבועי מחרוזת מרובת שורות.

שימוש בקו נטוי לאחור לפני המרכאות הסיום

הנטוי האחורי '' אחראי על בריחה מהמחרוזת וגורם לשגיאת התחביר.

הבה נבחן את הדוגמה הבאה.

דוגמא:

 # storing a directory path my_string = 'D:PythonMy_Folder' # printing the string value print('String:', my_string) 

תְפוּקָה:

 File 'D:Python	ernarypy.py', line 2 my_string = 'D:PythonMy_Folder' ^ SyntaxError: EOL while scanning string literal 

הֶסבֵּר:

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

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

נוכל לפתור בעיה זו באמצעות קטע הקוד הבא.

פִּתָרוֹן:

 # storing a directory path my_string = 'D:\Python\My_Folder\' # printing the string value print('String:', my_string) 

תְפוּקָה:

 String: D:PythonMy_Folder 

הֶסבֵּר:

בקטע הקוד שלמעלה, השתמשנו ב- '\' בקבוע המיתר. כתוצאה מכך, מתורגמן Python מבצע את המחרוזת מבלי להעלות שגיאה.