Kaip žinome, tokia programavimo kalba kaip Python yra interpretuojama kalba, o tai iš esmės reiškia, kad kiekvienas kodo blokas ar eilutė yra apdorojama po vieną, o ne visai pakeičiant visą programą į žemo lygio kodą.
Kai „Python“ vertėjas nuskaito kodo eilutę ir pastebi ką nors išskirtinio, jis iškelia klaidą, vadinamą sintaksės klaida. Paprastai klaidos buvo iškeltos dėl trūkstamo skliausto, trūkstamos pabaigos kabutės ir kitų esminių sintaksės anomalijų.
Tolesnėje pamokoje mes aptiksime vieną iš Python sintaksės klaidų, žinomų kaip EOL, kuri paprastai iškyla, kai bandome nuskaityti eilutės literalą.
Suprasti EOL reikšmę
Prieš spręsdami problemą, turime veiksmingai suprasti EOL reikšmę. EOL yra trumpinys iš „Einijos pabaigos“. EOL klaida reiškia, kad Python interpretatorius pasiekė eilutės pabaigą, nuskaitydamas eilutės literalą.
Eilučių literalai, taip pat žinomi kaip konstantos, turi būti pateikiami vienos arba dvigubos kabutėse. Jei bandome nuskaityti pasiekti „Eilutės pabaigą“, tai reiškia, kad pasiekėme paskutinį eilutės simbolį ir nesusidūrėme su pabaigos kabutėmis.
Panagrinėkime pagrindinį pavyzdį, parodantį, kaip iškeliama EOL klaida.
Pavyzdys:
# defining a string value my_string = 'This is my string literal, and it is broken... # printing the string value print('String:', my_string)
Išvestis:
File 'D:Python ernarypy.py', line 2 my_string = 'This is my string literal, and it is broken... ^ SyntaxError: EOL while scanning string literal
Paaiškinimas:
Aukščiau pateiktame kodo fragmente apibrėžėme eilutės literalą; tačiau eilutės gale praleidome kabutę, kuri pakėlė sintaksės klaida iškvietė EOL spausdindamas tą eilutę vartotojams.
Išvesties skiltyje galime stebėti mažą rodyklę, nukreipiančią į paskutinį eilutės simbolį, rodančią, kad klaida įvyko, kai programa bandė išanalizuoti tą teiginio segmentą.
Dabar, kai supratome problemą, supraskime kai kuriuos atvejus, kai ši klaida gali atsirasti vykdant python kodą.
Taisome sintaksės klaidą: EOL nuskaitant eilutę.
Dirbdami su Python programa galime susidurti su šia klaida keturiose pagrindinėse situacijose. Šios keturios pagrindinės situacijos yra tokios, kaip parodyta toliau:
- Trūksta pabaigos kabutės
- Naudojant neteisingą pabaigos kabutę
- Stygos nuolatinis tempimas iki kelių eilučių
- Pasvirojo brūkšnio naudojimas prieš kabutę
Pradėkime suprasti kiekvieną iš šių situacijų ir pabandykime jas išspręsti.
Trūksta pabaigos kabutės
Kaip aptarta ankstesniame kodo fragmente, Python interpretatorius iškelia sintaksės klaidą, kai pasiekia eilutės pažodinį galą ir nustato, kad trūksta kabutės.
Pavyzdys:
# defining a string value my_string = 'This is my string literal, and it is broken... # printing the string value print('String:', my_string)
Paaiškinimas:
Galime pastebėti, kad pažodinės eilutės pabaigoje trūksta kabutės, o tai taip pat pateisina sintaksės klaidą. Kiekviena kalba turi keletą pagrindinių sintaksės taisyklių, kurias pažeidus atsiranda klaidų.
Dabar panagrinėkime šią sintaksę kaip aukščiau pateiktos problemos sprendimą.
Sprendimas:
# defining a string value my_string = 'This is my string literal, and it is broken...' # printing the string value print('String:', my_string)
Išvestis:
String: This is my string literal, and it is broken...
Paaiškinimas:
Aukščiau pateiktame kodo fragmente galime pastebėti, kad pažodinės eilutės pabaigoje įtraukėme kabutę. Dėl to eilutė sėkmingai išspausdinama vartotojams, nepakeliant jokios sintaksės klaidos.
Naudojant neteisingą pabaigos kabutę
Galime pasinaudoti '' taip pat '' norėdami įtraukti tam tikrą eilutės konstantą Python. Tačiau programuotojas eilutės reikšmės pabaigoje dažnai naudoja neteisingą kabutę. Dėl tokios situacijos programa iškelia sintaksės klaidą EOL atžvilgiu.
Panagrinėkime tokią situaciją šiame pavyzdyje:
Pavyzdys:
# 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)
Išvestis:
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
Paaiškinimas:
Aukščiau pateiktame kodo fragmente eilutės reikšmės pabaigoje panaudojome neteisingą kabutę, dėl kurios atsiranda sintaksės klaida.
Tokios problemos galime išvengti naudodami atitinkamą kabutę eilutės gale, kaip parodyta kitame kodo fragmente.
Sprendimas:
# 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)
Išvestis:
String: This is my string literal with wrong quotation mark at the end.
Paaiškinimas:
Aukščiau pateiktame kodo fragmente, kaip galime pastebėti, eilutės pabaigoje naudojome atitinkamą kabutę, kuri padeda išvengti bet kokios EOL klaidos.
Stygos nuolatinis tempimas iki kelių eilučių
Yra įvairių pradedančiųjų Python programuotojų, kurie daro klaidą ištempdami teiginius į daugiau nei vieną eilutę. „Python“ atsižvelgia į naują eilutę kaip teiginio pabaigą, skirtingai nuo kitų kalbų, tokių kaip C++ ir Java, ';' kaip teiginių pabaiga.
Panagrinėkime pavyzdį, rodantį tą pačią problemą.
Problemos pavyzdys:
# defining a string value my_string = 'This is my string literal... this is my new line' # printing the string value print('String:', my_string)
Išvestis:
File 'D:Python ernarypy.py', line 2 my_string = 'This is my string literal... ^ SyntaxError: EOL while scanning string literal
Paaiškinimas:
java patikrinimas yra niekinis
Aukščiau pateiktame kodo fragmente galime pastebėti, kad kodas gali atrodyti įprastas; tačiau kai tik pradedama kita eilutė, Python interpretatorius užbaigia tą teiginį, sukeldamas sintaksės klaidą, nes neįtraukta eilutės konstanta.
Tačiau šią problemą galime išspręsti įvairiais būdais, kaip parodyta toliau:
1 sprendimas: naudokite „ “, kad pateiktumėte naujos eilutės efektą eilutės konstantai
# defining a string value my_string = 'This is my string literal... this is my new line' # printing the string value print('String:', my_string)
Išvestis:
String: This is my string literal... this is my new line
Paaiškinimas:
Į aukščiau pateiktą kodo fragmentą įtraukėme ' ' eilutės konstantoje, kad jai būtų suteiktas naujos eilutės efektas. Dėl to eilutės konstanta suskaido teiginį į kelias eilutes.
Dabar apsvarstykime kitą sprendimą.
2 sprendimas: naudokite trigubas kabutes, '''' arba '''' kelių eilučių eilučių konstantoms saugoti
# defining a string value my_string = '''This is my string literal... this is my new line''' # printing the string value print('String:', my_string)
Išvestis:
String: This is my string literal... this is my new line
Paaiškinimas:
Aukščiau pateiktame kodo fragmente naudojome trigubas kabutes, '''' siekiant išsaugoti kelių eilučių eilučių konstantas.
Pasvirojo brūkšnio naudojimas prieš kabutę
Pasvirasis brūkšnys '' yra atsakingas už pabėgimą nuo eilutės ir sukelia sintaksės klaidą.
Panagrinėkime toliau pateiktą pavyzdį.
Pavyzdys:
# storing a directory path my_string = 'D:PythonMy_Folder' # printing the string value print('String:', my_string)
Išvestis:
File 'D:Python ernarypy.py', line 2 my_string = 'D:PythonMy_Folder' ^ SyntaxError: EOL while scanning string literal
Paaiškinimas:
Aukščiau pateiktame kodo fragmente naudojome pasvirąjį brūkšnį '' norėdami atskirti aplanko kelius vienas nuo kito. Tačiau programos vykdymo metu Python interpretatorius iškėlė sintaksės klaidą.
Paskutinis pasvirasis brūkšnys prieš kabutę išeina iš eilutės konstantos, o Python interpretatorius atsižvelgia ' kaip vienas simbolis. Ši pabėgimo seka reiškia kabutes (') .
Šią problemą galime išspręsti naudodami šį kodo fragmentą.
Sprendimas:
# storing a directory path my_string = 'D:\Python\My_Folder\' # printing the string value print('String:', my_string)
Išvestis:
String: D:PythonMy_Folder
Paaiškinimas:
Aukščiau pateiktame kodo fragmente naudojome '\' eilutės konstantoje. Dėl to Python interpretatorius vykdo tą eilutę nepakeldamas klaidos.