Python gibi bir programlama dilinin Yorumlanmış bir dil olduğunu biliyoruz; bu, tüm programı tamamen düşük seviyeli bir kodla değiştirmek yerine, esasen her bloğun veya kod satırının tek tek işlendiğini ima eder.
Python yorumlayıcısı bir kod satırını taradığında ve olağandışı bir şey fark ettiğinde, Sözdizimi Hatası olarak bilinen bir hata ortaya çıkar. Genellikle eksik bir parantez, eksik bir bitiş teklifi ve sözdizimindeki diğer temel anormallikler, hataların ortaya çıkmasının nedenidir.
Aşağıdaki derste, Python'da EOL olarak bilinen ve genellikle bir dize değişmezini taramaya çalıştığımızda ortaya çıkan sözdizimi hatalarından birini keşfedeceğiz.
EOL'nin anlamını anlamak
Bir sorunu çözmeden önce EOL'nin anlamını etkili bir şekilde anlamalıyız. EOL 'Hat Sonu'nun kısaltmasıdır. EOL hatası, Python Yorumlayıcısının dize değişmezini tararken satırın sonuna ulaştığını gösterir.
Sabitler olarak da bilinen dize değişmezleri tek veya çift tırnak içine alınmalıdır. Taramaya çalıştığımızda 'Satır Sonu'na ulaşmak, dizenin son karakterine ulaştığımız ve sondaki tırnak işaretleriyle karşılaşmadığımız anlamına gelir.
EOL hatasının nasıl ortaya çıktığını gösteren temel bir örneği ele alalım.
Örnek:
# defining a string value my_string = 'This is my string literal, and it is broken... # printing the string value print('String:', my_string)
Çıktı:
File 'D:Python ernarypy.py', line 2 my_string = 'This is my string literal, and it is broken... ^ SyntaxError: EOL while scanning string literal
Açıklama:
Yukarıdaki kod parçacığında bir dize değişmezi tanımladık; ancak dizenin sonundaki tırnak işaretini kaçırdık, bu da sözdizimi hatası kullanıcılar için bu dizeyi yazdırırken EOL denir.
Çıktı bölümünde, dizenin son karakterini gösteren küçük bir ok görebiliriz; bu, program ifadenin o bölümünü ayrıştırmaya çalıştığında hatanın oluştuğunu gösterir.
Artık sorunu anladığımıza göre, bir python kodu çalıştırılırken bu hatanın ortaya çıkabileceği bazı örnekleri anlayalım.
'Sözdizimi Hatası: Dize değişmezini tararken EOL' sorununun düzeltilmesi.
Bir Python programı üzerinde çalışırken bu hatayla dört ana durumda karşılaşabiliriz. Bu dört ana durum aşağıda gösterilmiştir:
- Bitiş tırnak işareti eksik
- Yanlış bitiş tırnak işaretinin kullanılması
- Birden fazla satıra uzanan dize sabiti
- Bitiş tırnak işaretinden önce ters eğik çizgi kullanma
Bu durumların her birini anlamaya başlayalım ve bunların etrafında çalışmaya çalışalım.
Bitiş tırnak işareti eksik
Önceki kod parçacığında tartışıldığı gibi Python yorumlayıcısı, dize değişmezinin sonuna ulaştığında bir sözdizimi hatası oluşturur ve tırnak işaretinin eksik olduğunu keşfeder.
Örnek:
# defining a string value my_string = 'This is my string literal, and it is broken... # printing the string value print('String:', my_string)
Açıklama:
Gerçek dizenin sonundaki tırnak işaretinin eksik olduğunu gözlemleyebiliriz, bu da sözdizimi hatasını haklı çıkarır. Her dilin sözdizimi ile ilgili birkaç temel kuralı vardır ve bunlar ihlal edildiğinde hatalara neden olur.
Şimdi yukarıdaki problemin çözümü olarak aşağıdaki sözdizimini ele alalım.
Çözüm:
# defining a string value my_string = 'This is my string literal, and it is broken...' # printing the string value print('String:', my_string)
Çıktı:
String: This is my string literal, and it is broken...
Açıklama:
Yukarıdaki kod parçacığında, değişmez dizenin sonuna tırnak işaretini dahil ettiğimizi görebiliriz. Sonuç olarak dize, herhangi bir Sözdizimi hatasına yol açmadan kullanıcılar için başarıyla yazdırılır.
Yanlış bitiş tırnak işaretinin kullanılması
faydalanabiliriz '' birlikte '' Python'da belirli bir dize sabitini içine almak için. Ancak programcı genellikle dize değerinin sonunda yanlış tırnak işareti kullanır. Böyle bir durum programın EOL açısından Syntax hatası vermesine neden olur.
Aşağıdaki örnekte böyle bir durumu ele alalım:
Örnek:
# 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)
Çıktı:
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
Açıklama:
Yukarıdaki kod parçacığında, dize değerinin sonunda sözdizimi hatasına neden olan yanlış tırnak işaretini kullandık.
Aşağıdaki kod parçacığında gösterildiği gibi dizenin sonunda eşleşen tırnak işaretini kullanarak bu tür bir sorunu önleyebiliriz.
Çözüm:
# 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)
Çıktı:
String: This is my string literal with wrong quotation mark at the end.
Açıklama:
Yukarıdaki kod parçacığında, gözlemleyebileceğimiz gibi, herhangi bir EOL hatasından kaçınmamıza yardımcı olan dizenin sonunda eşleşen tırnak işaretini kullandık.
Birden fazla satıra uzanan dize sabiti
İfadeleri birden fazla satıra genişletme hatasına düşen çeşitli acemi Python programcıları vardır. Python, C++ ve Java gibi diğer dillerin aksine, ifadenin sonu olarak yeni bir satırı hesaba katar. ';' Açıklamaların sonu olarak.
Aynı sorunu gösteren bir örneği ele alalım.
Sorun Örneği:
# defining a string value my_string = 'This is my string literal... this is my new line' # printing the string value print('String:', my_string)
Çıktı:
File 'D:Python ernarypy.py', line 2 my_string = 'This is my string literal... ^ SyntaxError: EOL while scanning string literal
Açıklama:
dizüstü bilgisayar klavyesindeki ekleme tuşu nerede
Yukarıdaki kod parçacığında kodun sıradan görünebileceğini gözlemliyoruz; ancak, bir sonraki satır başlar başlamaz Python yorumlayıcısı, dize sabitini kapsamadığı için bir Sözdizimi hatası oluşturan bu ifadeye son verir.
Ancak bu sorunu aşağıda gösterildiği gibi çeşitli yöntemler kullanarak çözebiliriz:
Çözüm 1: Dize sabitine yeni bir satırın etkisini sağlamak için ' 'yi kullanmak
# defining a string value my_string = 'This is my string literal... this is my new line' # printing the string value print('String:', my_string)
Çıktı:
String: This is my string literal... this is my new line
Açıklama:
Yukarıdaki kod parçacığına şunları ekledik: 'N' yeni bir satırın etkisini sağlamak için dize sabitinde. Sonuç olarak, dize sabiti ifadeyi birden çok satıra böler.
Şimdi başka bir çözüm düşünelim.
2. Çözüm: Çok satırlı dize sabitlerini depolamak için ''' veya ''' üçlü tırnak işaretlerini kullanma
# defining a string value my_string = '''This is my string literal... this is my new line''' # printing the string value print('String:', my_string)
Çıktı:
String: This is my string literal... this is my new line
Açıklama:
Yukarıdaki kod parçacığında üçlü tırnak işaretini kullandık, ''' çok satırlı dize sabitlerini saklamak için.
Bitiş tırnak işaretinden önce ters eğik çizgi kullanma
Ters eğik çizgi '' dizeden kaçmaktan sorumludur ve sözdizimi hatasına neden olur.
Aşağıdaki örneği ele alalım.
Örnek:
# storing a directory path my_string = 'D:PythonMy_Folder' # printing the string value print('String:', my_string)
Çıktı:
File 'D:Python ernarypy.py', line 2 my_string = 'D:PythonMy_Folder' ^ SyntaxError: EOL while scanning string literal
Açıklama:
Yukarıdaki kod parçacığında ters eğik çizgiyi kullandık '' klasörün yollarını birbirinden ayırmak için. Ancak programın yürütülmesi sırasında Python yorumlayıcısı Sözdizimi hatası verdi.
Tırnak işaretinden önceki son ters eğik çizgi dize sabitinden kaçar ve Python yorumlayıcısı şunu dikkate alır: ' tek bir karakter olarak. Bu kaçış dizisi tırnak işaretine dönüşür (') .
Bu sorunu aşağıdaki kod parçasını kullanarak çözebiliriz.
Çözüm:
# storing a directory path my_string = 'D:\Python\My_Folder\' # printing the string value print('String:', my_string)
Çıktı:
String: D:PythonMy_Folder
Açıklama:
Yukarıdaki kod parçasında şunu kullandık: '\' dize sabitinde. Sonuç olarak, Python yorumlayıcısı bu dizeyi bir hata yaratmadan çalıştırır.