Као што знамо да је програмски језик као што је Питхон интерпретирани језик, што у суштини подразумева да се сваки блок или линија кода обрађује један за другим, уместо да се цео програм мења у код ниског нивоа.
Кад год тумач Питхон-а скенира линију кода и примети нешто неуобичајено, он покреће грешку познату као грешка у синтакси. Уопштено говорећи, недостајућа заграда, недостајући завршни цитат и друге фундаменталне аномалије у синтакси су разлог зашто су грешке настале.
У следећем водичу ћемо открити једну од синтаксичких грешака у Питхон-у познату као ЕОЛ, која се обично јавља када покушамо да скенирамо литерал стринга.
Разумевање значења ЕОЛ-а
Морамо ефикасно разумети значење ЕОЛ-а пре него што решимо проблем. ЕОЛ је скраћеница од 'Енд оф Лине'. ЕОЛ грешка означава да је тумач Пајтона дошао до краја реда док је скенирао литерал стринга.
Литерали стрингова, такође познати као константе, морају бити затворени једноструким или двоструким наводницима. Достизање 'Крај реда' када покушамо да скенирамо значи да смо стигли до последњег знака стринга и да нисмо наишли на завршне наводнике.
Хајде да размотримо основни пример који показује како се ЕОЛ грешка повећава.
Пример:
# 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
Објашњење:
У горњем исечку кода, дефинисали смо стринг литерал; међутим, пропустили смо наводник на крају низа, који је подигао синтаксна грешка зове ЕОЛ док штампа тај стринг за кориснике.
У излазном одељку можемо приметити малу стрелицу која показује на последњи карактер стринга, показујући да се грешка догодила када је програм покушао да рашчлани тај сегмент исказа.
Сада када смо разумели проблем, хајде да разумемо неке случајеве у којима се ова грешка може појавити током извршавања Питхон кода.
Исправљање „синтаксичке грешке: ЕОЛ приликом скенирања стринговог литерала“.
На ову грешку можемо наићи у четири главне ситуације док радимо на Питхон програму. Ове четири главне ситуације су приказане у наставку:
- Недостаје завршни наводник
- Коришћење погрешног крајњег наводника
- Стринг константно растезање на више линија
- Коришћење обрнуте косе црте испред завршног наводника
Хајде да почнемо да разумемо сваку од ових ситуација и покушамо да их заобиђемо.
Недостаје завршни наводник
Као што је објашњено у претходном исечку кода, Питхон интерпретер покреће синтаксичку грешку кад год стигне до краја литерала стринга и открије да недостаје наводник.
Пример:
# 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...
Објашњење:
У горњем исечку кода, можемо приметити да смо укључили наводник на крају стринга литерала. Као резултат, стринг се успешно штампа за кориснике без подизања било какве синтаксичке грешке.
Коришћење погрешног крајњег наводника
Можемо да искористимо '' добро као '' како би се у Пајтону затворила одређена стринг константа. Међутим, програмер често користи нетачан наводник на крају вредности стринга. Таква ситуација узрокује да програм покрене синтаксичку грешку у смислу ЕОЛ-а.
Размотримо такву ситуацију на следећем примеру:
Пример:
# 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.
Објашњење:
У горњем исечку кода, као што можемо да приметимо, користили смо одговарајући знак наводника на крају стринга који нам помаже да избегнемо било какву ЕОЛ грешку.
Стринг константно растезање на више линија
Постоје различити почетници Питхон програмери који праве грешку протежући изјаве на више од једног реда. Питхон узима у обзир нови ред као крај изјаве, за разлику од других језика као што су Ц++ и Јава који сматрају ';' као крај изјава.
Хајде да размотримо пример који показује исти проблем.
Пример проблема:
# 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
Објашњење:
позивање јс функције из хтмл-а
У горњем исечку кода, можемо приметити да код може изгледати обично; међутим, чим се започне следећи ред, Питхон интерпретер ставља тачку на ту наредбу изазивајући синтаксичку грешку јер није обухватила константу стринга.
Међутим, овај проблем можемо решити користећи различите методе као што је приказано у наставку:
Решење 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
Објашњење:
У горњем исечку кода користили смо обрнуту косу црту '' како би се путање фасцикле одвојиле једна од друге. Међутим, током извршавања програма, Питхон интерпретер је покренуо синтаксичку грешку.
Последња обрнута коса црта пре наводника избегава константу стринга, а Питхон тумач узима у обзир ' као један лик. Ова излазна секвенца се преводи у знак наводника (') .
Овај проблем можемо решити користећи следећи исечак кода.
Решење:
# storing a directory path my_string = 'D:\Python\My_Folder\' # printing the string value print('String:', my_string)
Излаз:
String: D:PythonMy_Folder
Објашњење:
У горњем исечку кода користили смо '\' у стринг константи. Као резултат тога, Питхон интерпретер извршава тај стринг без изазивања грешке.