piton

Python Geri İzleme Eğitimi

Python Geri İzleme Eğitimi
Kod yürütülürken bir istisna oluşturulduğunda, Python bir geri izleme görüntüler. Geri izleme, Python'da kodda belirli bir yerde yapılan işlev çağrılarını içeren bir rapor gibi görünüyor, i.e., bir kez bir hatanız olduğunda, onu geriye bırakmamız önerilir (geri izleme). Geri izleme, kod bir hata alırsa, kodla ilgili ayrıntılar sağlayabilir. Bu tür geri izlemeler biraz yorucu görünebilir, ancak onu soyup size ne öğretmeye çalıştığını görene kadar gerçekten yararlı olabilirler. Python geri izlemede, kodunuzda oluşturulan sorunun nedenini analiz etmenize ve düzeltmenize yardımcı olacak birçok veri vardır.

Geri İzlemeyi Yorumlayın:

Bazı geri izlemelere bakmak, onlardan bir şeyler elde etmenizi sağlamak için sağladıkları bilgilerin daha iyi yorumlanmasını sağlayabilir. Temel bir istisnanın nasıl geri izleme olabileceğinin yorumuna bir göz atalım. İşte Spyder'ın yürütülmesinde (Python 3) bir geri izleme hatası oluşturan basit bir kod örneği.

Aşağıda hata geri izleme görüntüsü var. İlk satır dosya konumunu gösterir. Renkleri kullanan tüm çizgiler için bazı özellikler.

Beyaz: Geri izleme (en son arama en son) bir geri izleme ifadesidir. Öte yandan, son satırdaki beyaz kısım ilgili hata bilgilerini gösteriyor.

Yeşil: Bir dosya adını ve konumunu söylerken bir hata var.

Mavi: Hatanın meydana geldiği dosyanın satır numarasını gösterir.

Sarı: Bir istisnanın göründüğü gerçek satırı görüntüler.

Kırmızı: Hata Türü.

Geri izlemede birkaç önemli hata:

AdHatası
IndexError
Anahtar Hatası
TipHata
değerHatası
ImportError /ModuleNotFound

İsim Hatası:
Kodda belirtilmeyen bir değişkeni yorumlamak istediğinizde NameError görünür. İşte kolay bir NameError geri izleme örneği. bir değişkenimiz var 'numara' bir değerle tanımlanırken, Yazdır açıklama yazdırdık 'hissiz', kodun hiçbir yerinde tanımlanmayan. Bu kodu çalıştıralım ve ne olduğunu kontrol edelim.

'Numb' değişkenini tanımlamadığımız için NameError geri izlemesinin gerçekleştiğini görebilirsiniz, bu yüzden nasıl yazdırılabilir?. Bu nedenle, bu program NameError'ı gösterir ve son satırda beyaz ve kırmızı metinle ek bilgilerle detaylandırır. Sarı metin, hatanın oluştuğu tam kodu gösteriyor.

Dizin Hatası:

Kodda erişilemeyen bir seri tanımlandığında IndexError üretilir. bir tanımladık liste adlandırılmış 'yeni' sahip 5 dizin İçinde bazı değerler olan. Bundan sonra, değerin çıktısını almak için print komutunu belirtmeliyiz dizin numara 9.

Bu kodu çalıştırdığımızda, dizin dışı tanımlayan IndexError üretecektir. 5 indeksli bir liste tanımladığımız için, 9 olan basılı indeks numarası aralığımızda olmadığı için erişilemiyor.

Anahtar Hatası:

Python'a ulaşmaya çalıştığınızda bir anahtar hatası üretir anahtar hangisi tanımlanmamış veya haritalanmış, özellikle bir sözlük. Daha çok IndexError gibi. Öyleyse, adında basit bir sözlük örneğine bakalım 'rastgele' bu tuşlara atanan bazı değerlerle birlikte iki anahtar tanımlı. Bir sonraki satırda, adlı anahtarı yazdırdık 'Bir' baskı beyanında.

Ah! Geri izleme KeyError'umuz var. Bunun nedeni, print deyiminde sağlanan ve sözlükte tanımlanmayan yanlış anahtardır. Sözlükte tanımlanmış küçük bir harf anahtarı varken büyük harfli bir anahtar sağlayarak hata yapabilirsiniz.

Tip Hatası:

TypeError, bir işlem veya yöntem bir veriye bulaştığında oluşan bir istisna olarak tanımlanır uygun olmayan tip bir varlığın veya değişkenin. Bu dize her iki değeri de eklerken iki değer alan basit bir değişken örneğimiz var. İlk değer bir dize türüdür ve diğeri bir tamsayı türüdür. Print deyimi, eklemenin sonucunu yazdırıyor.

Bu kod gerçekleştirildiğinde, istisnayı yükseltir. Bu istisna tamamen birleştirilen yanlış nesne türüyle ilgilidir. Tamsayı türü bir değişkenle bir dize türü değişken ekleyemeyeceğiniz detaylandırılıyor.

Değer Hatası:

Değer Hatası, yalnızca bazı durumlarda oluşan bir istisna olarak tanımlanır yerleşik yöntem alır doğru tip argümanı ama yanlış değer içinde. Küçük bir örneğe bakalım. Yerleşik bir yöntem alıyoruz int() print ifadesinde bazı dize değeriyle.

Bu tek satırlık kodu çalıştırdığınızda, bir ValueError üretecektir çünkü tamsayı tipi bir fonksiyon kullanırken ona çalıştırılacak bir string değeri veriyoruz. Bu yüzden int() fonksiyonunun içinde geçersiz bir değer olduğunu gösterecektir.

Öte yandan, ona kesirli bir değer verirseniz, onu bir tamsayı değerine dönüştürür.

Bu kod 11 verir, çünkü ondalık kısım tamamen yok sayılırken yalnızca tamsayı kısmı alır.

İçe Aktarma Hatası/Modül Bulunamadı:

Bazen zorundasın ithalat bazı paketler veya modüller özel işlevleri kullanmak için python kodunuzda. Koddaki bir Import deyimi hakkında biraz hatalı olduğunda bir ImportError geri izlemesi bulacaksınız. Bu geri izleme hatası, siz mümkün değil için bulmak belirli modül veya paketin içinden bir şey. Burada iki modül ithal ettik, 'pip' ve 'java', bizim kodumuzda.

Bu kodu yürütürken ModuleNotFoundError traceback verecektir. Bunun nedeni, içe aktarılan 'java' modülünün python kitaplığı tarafından desteklenmemesidir. Öte yandan, Python destekli modül olduğu için 'pip' modülünü içe aktarma konusunda bir istisna vermez.

Sonuç:

Python geri izlemesi, kodda neyin yanlış gittiğini anlamanıza yardımcı olacak mükemmel bilgiler sağlar. Bunu ilk kez yapıyor olsanız da, ne yaptığını anlamasanız da, geri izleme oluşturma biraz göz korkutucu olabilir. Daha güçlü bir Python programcısı olmak için Python geri izlemesinin hangi ayrıntıları verdiğini öğrenmek önemlidir.

Battle for Wesnoth Tutorial
The Battle for Wesnoth is one of the most popular open source strategy games that you can play at this time. Not only has this game been in developmen...
0 A.D. Tutorial
Out of the many strategy games out there, 0 A.D. manages to stand out as a comprehensive title and a very deep, tactical game despite being open sourc...
Unity3D Tutorial
Introduction to Unity 3D Unity 3D is a powerful game development engine. It is cross platform that is it allows you to create games for mobile, web, d...