Як ми знаємо, така мова програмування, як Python, є інтерпретованою мовою, що, по суті, означає, що кожен блок або рядок коду обробляється один за одним, а не змінює всю програму на код низького рівня.
Кожного разу, коли інтерпретатор Python сканує рядок коду та помічає щось незвичайне, він викликає помилку, відому як синтаксична помилка. Як правило, помилки виникають через відсутність дужок, кінцевих лапок та інші фундаментальні аномалії в синтаксисі.
У наступному посібнику ми виявимо одну з синтаксичних помилок у Python, відому як EOL, яка зазвичай виникає, коли ми намагаємося сканувати рядковий літерал.
Розуміння значення EOL
Ми повинні ефективно зрозуміти значення EOL, перш ніж вирішити проблему. EOL - це скорочення від 'End of Line'. Помилка 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 під час друку цього рядка для користувачів.
У розділі виводу ми можемо спостерігати маленьку стрілку, яка вказує на останній символ рядка, демонструючи, що помилка сталася, коли програма намагалася проаналізувати цей сегмент оператора.
Тепер, коли ми зрозуміли проблему, давайте розберемо деякі випадки, коли ця помилка може з’являтися під час виконання коду python.
Виправлення «Синтаксична помилка: EOL під час сканування рядкового літералу».
Ми можемо зіткнутися з цією помилкою в чотирьох основних ситуаціях під час роботи над програмою Python. Ці чотири основні ситуації, як показано нижче:
- Відсутня кінцева лапка
- Використання неправильного закінчення лапки
- Константа рядка розтягується на кілька рядків
- Використання зворотної скісної риски перед кінцевими лапками
Давайте почнемо розуміти кожну з цих ситуацій і спробуємо їх обійти.
Відсутня кінцева лапка
Як обговорювалося в попередньому фрагменті коду, інтерпретатор 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...
Пояснення:
У наведеному вище фрагменті коду ми можемо помітити, що ми включили лапки в кінці літерального рядка. У результаті рядок успішно друкується для користувачів без виникнення синтаксичних помилок.
Використання неправильного закінчення лапки
Ми можемо використати ' ' так добре як ' ' щоб укласти певну рядкову константу в Python. Однак програміст часто використовує неправильні лапки в кінці значення рядка. Така ситуація змушує програму викликати синтаксичну помилку з точки зору 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
Пояснення:
Ігри imessage для андроїд
У наведеному вище фрагменті коду ми бачимо, що код може виглядати звичайно; однак, як тільки починається наступний рядок, інтерпретатор 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 викликав синтаксичну помилку.
Остання зворотна скісна риска перед лапками екранує константу рядка, і інтерпретатор Python розглядає ' як один персонаж. Ця керуюча послідовність перекладається на лапки (') .
Ми можемо вирішити цю проблему за допомогою наступного фрагмента коду.
рішення:
# storing a directory path my_string = 'D:\Python\My_Folder\' # printing the string value print('String:', my_string)
Вихід:
String: D:PythonMy_Folder
Пояснення:
У наведеному вище фрагменті коду ми використали '\' у константі рядка. У результаті інтерпретатор Python виконує цей рядок без повідомлення про помилку.