WEBVTT

00:00.240 --> 00:07.410
Harika bir programcı olmak istiyorsanız çok önemli bir konudan bahsedelim ve buna hata ayıklama deniyor.

00:07.620 --> 00:11.000
Gördüğünüz gibi, kimse mükemmel programlar yazmıyor.

00:11.010 --> 00:13.410
Bu gerçekten imkansız.

00:13.440 --> 00:17.430
Her zaman hata yapacağız ve programlar sürekli olarak geliştiriliyor.

00:17.640 --> 00:25.320
Giderek daha fazla hata buldukça kodumuzu sürekli geliştiririz çünkü programlar hatalarla doludur ya da kod çalışırken çalışma

00:25.320 --> 00:29.730
zamanında hata veya istisna dediğimiz şeylerle karşılaşırız.

00:30.300 --> 00:38.790
Gördüğünüz gibi, bu hataları bulma ve kodumuzdan kaldırma eylemine hata ayıklama denir.

00:39.000 --> 00:46.470
Programcılar olarak zamanımızın büyük bir kısmı, ister kendi kodumuz ister başkalarının kodu olsun, kodda hata ayıklamak ve "Hey,

00:46.470 --> 00:49.560
bu neden çalışmıyor?" diye düşünmekle geçiyor.

00:50.010 --> 00:54.690
Ve kıdemli geliştiriciler hata ayıklama konusunda gerçekten çok iyiler.

00:55.380 --> 01:01.320
Öyleyse bu videoda hata ayıklama için bazı önerilerimden ve bazı iyi uygulamaların neler olduğundan

01:01.320 --> 01:02.370
bahsedelim.

01:02.850 --> 01:07.380
Daha fazla kod yazdıkça hata ayıklama konusunda daha iyi olacağınızı unutmayın.

01:07.380 --> 01:12.150
Bu yüzden yapabileceğiniz en iyi şey pratik yapmaya devam etmek ve Python kodu yazmaya devam etmektir.

01:13.230 --> 01:14.940
Peki benim bazı ipuçlarım neler?

01:14.970 --> 01:19.320
Öncelikle, kesinlikle biraz kredi kullanmak istiyorsunuz.

01:19.380 --> 01:21.250
Peki borç vermek nedir?

01:21.270 --> 01:25.070
Geliştirici ortamımızı kurarken bu konudan bahsetmiştik.

01:25.080 --> 01:31.260
Ödünç verme, kodumuzla ilgili bazı sorunları kodlarken tespit etmemizi sağlar.

01:31.290 --> 01:40.290
Örneğin, burada num artı dört yaparsam kırmızı bir alt çizgi alırım ve burada Pi Flakes işleyicisinin kodumu çalıştırmadan

01:40.290 --> 01:46.320
önce hey, NUM adında bir tanımsız olduğunu fark ettiğini görüyorsunuz.

01:46.530 --> 01:51.510
Bu yüzden ödünç verme, kodumuzu çalıştırmadan önce bu hataları bulmamızı sağlar.

01:51.870 --> 01:59.550
Ve pi charm gibi zaten yerleşik olarak kredi veren kimlikleri kullanabileceğimizi veya sublime text veya Visual Studio kodunu kullanabileceğimizi

01:59.550 --> 02:06.990
ve kodumuzda gerçekten kredi vermek için PI lent gibi paketleri ve uzantıları yükleyebileceğimizi gördük.

02:07.020 --> 02:09.570
Bu gerçekten çok önemli bir araç.

02:09.600 --> 02:15.480
Daha sonra, her zaman bir tür kimlik veya kimlik numarası kullanmanızı öneririm.

02:16.380 --> 02:23.040
Ed, çünkü bu editörler ve ID'ler, özellikle Pi char gibi Python'a özgü olanlar, Pep sekiz'e göre

02:23.070 --> 02:29.370
otomatik biçimlendirme gibi kullanmamız için tüm bu yerleşik araçlara sahiptir.

02:29.370 --> 02:34.410
Python topluluğunun sahip olduğu resmi stil kılavuzunu hatırlıyor musunuz?

02:34.590 --> 02:42.600
Diyelim ki kodumuzun vurgulanması ve biçimlendirilmesi ile kodumuzdaki hataları tespit etmemizi sağlar.

02:43.440 --> 02:47.670
Böylece daha kodu çalıştırmadan önce herhangi bir hatayı tespit etmemiz kolaylaşır.

02:48.240 --> 02:52.050
Son olarak, hataları okumayı öğrenebilmelisiniz.

02:52.350 --> 02:57.030
Ve bu, Python'u öğrendikçe sizinle birlikte uygulamaya çalıştığım bir şey.

02:57.330 --> 03:04.260
Örneğin, dört artı yaparsam, burada anlamsız bir şey diyelim ve Çalıştır'a tıklayayım.

03:06.230 --> 03:06.950
Hemen.

03:06.950 --> 03:07.410
Anlıyorum.

03:07.430 --> 03:10.080
Hey, altıncı hatta.

03:10.100 --> 03:13.370
Ana PI dosyamda bir hata var.

03:13.580 --> 03:19.310
Bir tür hatası var ve burada int ve string eklemeye çalıştığımı görüyorum.

03:19.950 --> 03:24.030
Böylece hataları okuyabiliyor ve ne anlama geldiklerini anlayabiliyoruz.

03:25.380 --> 03:28.410
Belki böyle bir şey yaparım.

03:28.440 --> 03:29.790
Çalıştır'a tıklarsam.

03:30.490 --> 03:31.900
Sözdizimi hatası alıyorum.

03:33.110 --> 03:36.440
Ve bildiğim bir sözdizimi hatası bu anlama geliyor.

03:36.440 --> 03:42.410
Hey, Python yorumlayıcısı kodumu okumaya çalışıyor, ancak az önce yazdığınız şey Python değil.

03:42.410 --> 03:43.880
Ne yaptığın hakkında hiçbir fikrim yok.

03:45.410 --> 03:45.890
İşte.

03:45.890 --> 03:49.180
Dize değişmezini tararken satır sonu olduğunu görüyorum.

03:49.190 --> 03:54.590
Bu dizeyi okumaya çalışıyorum ve aniden program dizeyi bitirmeniz gerektiği gibi bitiyor,

03:54.590 --> 03:55.670
hatırladınız mı?

03:56.770 --> 04:01.060
Dolayısıyla bu hataları okuyabilmek gerçekten çok önemli.

04:01.450 --> 04:07.390
Ve bu derste bunlardan bazılarını tartıştık, Python yorumlayıcısının anlamadığı bir şey yazdığınız sözdizimi

04:07.390 --> 04:10.420
hatası gibi en yaygın olanlardan bazıları.

04:10.780 --> 04:13.210
İsim hatası gibi bir şeyimiz var, değil mi?

04:13.210 --> 04:16.720
Var olmayan bir değişkeni kullandığımız yer.

04:17.710 --> 04:19.180
Yani Python anlamıyor.

04:19.180 --> 04:20.970
Hey, ismin ne olduğu hakkında hiçbir fikrim yok.

04:20.980 --> 04:22.810
İsmin değeri nedir?

04:24.000 --> 04:25.650
Tip hava gibi şeylerimiz var.

04:25.680 --> 04:31.470
Bu, veri türünü yanlış eşleştirdiğimizde ve diyelim ki bir dize artı dört yaptığımızda olur.

04:32.220 --> 04:34.740
Değer hatası gibi şeylerimiz var.

04:35.470 --> 04:41.800
Var olmayan bir anahtara erişmeye çalıştığımız anahtar hatası veya bir nesnenin yöntemine erişmeye

04:41.800 --> 04:47.020
çalıştığımız ve bu yöntemin var olmadığı öznitelik hatası gibi şeylerimiz var.

04:47.710 --> 04:54.190
Şimdi, bu hatalar kurs boyunca gördüğümüz bir şey ve birkaç tane daha göreceğiz.

04:54.580 --> 05:02.380
Gerçekten çok yaygın olan ve zamanın %90'ında ortaya çıkan yaklaşık 15 ila 20 hata olduğunu söyleyebilirim.

05:03.230 --> 05:07.370
Ve eğer hatırlarsanız, bunlar hakkında bilgi edinmek için her zaman Python belgelerine gidebilirsiniz.

05:07.370 --> 05:09.620
Ama bu sadece pratikle gelir.

05:09.650 --> 05:14.420
Daha önce hiç görmediğiniz bir hata görürseniz, bunu gördüğünüzde belgelere gidip

05:14.420 --> 05:16.260
okumanızı tavsiye ederim.

05:16.280 --> 05:19.490
Genellikle bir sonraki geldiğinde hatırlama eğiliminde olursunuz.

05:20.080 --> 05:23.920
Ama size kodda hata ayıklamanın en sevdiğim yolunu göstereyim.

05:25.050 --> 05:30.570
Ve buna PDB ya da Python Hata Ayıklayıcı deniyor.

05:31.080 --> 05:35.070
Ve PDB, Python'da yerleşik bir modüldür.

05:36.270 --> 05:36.750
Tekrar.

05:36.750 --> 05:43.470
Unutmayın, yerleşik modülümüz Python'un birlikte geldiği standart kütüphanenin bir parçasıdır ve PDB etkileşimli yorumlayıcılar

05:43.470 --> 05:46.200
için Python hata ayıklayıcısıdır.

05:47.400 --> 05:51.180
Burada okuyabilirsiniz ama ben size ne işe yaradığını göstereyim.

05:52.460 --> 05:52.860
Görüyorsun ya.

05:52.880 --> 05:58.070
PDB son derece kullanışlıdır çünkü kodla etkileşime girmemizi sağlar.

05:58.550 --> 06:08.210
Önceden bir fonksiyonumuz olduğunda, diyelim ki ADD fonksiyonumuz var ve bir numara, iki numara var ve sonra

06:08.630 --> 06:14.630
bu fonksiyon basitçe bir numara artı iki numara döndürüyor.

06:15.630 --> 06:23.460
Şimdi daha önce, diyelim ki bu kodda hata ayıklamak istedik ve diyelim ki dört artı bazı anlamsız şeyler ekliyoruz ve bize

06:23.460 --> 06:24.930
bir hata veriyor.

06:26.760 --> 06:33.870
Atacağım ilk adım büyük olasılıkla buraya bir baskı eklemek olurdu, böylece baskı diyebilirdim.

06:33.870 --> 06:35.160
Hey, neler oluyor?

06:35.160 --> 06:35.610
Bir bakayım.

06:35.610 --> 06:38.130
Bir ve iki numara ve bana verdikleri.

06:38.970 --> 06:43.170
Ve print, kodunuzda hata ayıklamanın gerçekten çok hızlı ve kolay bir yoludur.

06:43.530 --> 06:48.480
Her zaman kullanıyorum ama PDB bize biraz daha destek veriyor.

06:49.780 --> 06:51.840
Yani bu şekilde kullanabiliriz.

06:51.850 --> 07:00.310
Basitçe PDB'yi içe aktarırız ve print fonksiyonu gibi bir şey kullanmak yerine basitçe "Buraya bir boşluk ekleyeyim"

07:00.310 --> 07:01.540
diyebiliriz.

07:01.540 --> 07:08.650
Python hata ayıklayıcısı için basitçe PDB diyebilir ve ardından izi ayarla diyebiliriz.

07:09.310 --> 07:15.430
Ve set trace, içe aktardığımız bu PDB nesnesi üzerinde sahip olduğumuz en kullanışlı yöntem olduğunu söyleyebilirim.

07:16.520 --> 07:18.830
Bir set metodu çalıştırdığımda görüyorsunuz.

07:22.300 --> 07:28.900
Artık buraya komutlar yazabileceğim ve kodumu gerçekten test edebileceğim etkileşimli bir Python hata ayıklayıcısı

07:28.900 --> 07:29.560
veriyor.

07:30.290 --> 07:36.360
Ve şu anda bu PDB'de ilginç olan kısım şu, sekizinci satırın tam içindeyim.

07:36.380 --> 07:41.630
Böylece kodum çalışmaya çalıştı, ancak PDB set trace dediği anda durakladı.

07:41.630 --> 07:47.510
Ve şimdi bu dünyadayım ve neler olup bittiğini test edebiliyorum, böylece gerçekten diyebiliyorum ki, Hey, num bir,

07:47.510 --> 07:48.170
bu nedir?

07:48.200 --> 07:49.400
Bir numara dört.

07:49.400 --> 07:50.420
İki numaraya ne dersin?

07:50.750 --> 07:57.050
Peki num two bir string ve ben bir string ve bir int eklemeye çalışıyorum, bu çalışmıyor gibi olabilirim, böylece

07:57.050 --> 08:00.050
hataları bu şekilde de tespit edebilirim.

08:00.680 --> 08:06.140
Şimdi bu PDB etkileşimli aslında bir ton yararlı şey içeriyor.

08:06.140 --> 08:08.270
Yani buraya yardım yazarsam.

08:09.670 --> 08:10.300
Şunu görüyor musun?

08:10.300 --> 08:14.140
PDB'de kullanabileceğim komutlarım var.

08:14.260 --> 08:16.510
Yani burada bir ton var.

08:16.510 --> 08:21.510
Beni bu PDB'den, Python hata ayıklayıcısından çıkaracağını varsaydığım çıkışım var.

08:21.520 --> 08:23.020
Ama benim de var.

08:23.780 --> 08:24.710
Şöyle şeyler.

08:25.490 --> 08:26.570
Liste diyelim.

08:26.570 --> 08:27.740
Bakalım liste ne yapacak.

08:27.740 --> 08:31.970
Yani buraya liste yazdığımda ve şu anda web sitesi gerçekten.

08:32.820 --> 08:35.940
Beni çok fazla göstermiyor, ama umarım hala listeyi görebilirsiniz.

08:37.110 --> 08:38.940
Ve sanırım bir çeşit çıktı.

08:38.940 --> 08:46.410
Kodumun ve OC'nin bir listesini aldığımı görüyorum, ancak diyelim ki listenin tam olarak ne işe yaradığını bilmiyorum.

08:47.280 --> 08:50.970
PDB yazmamızı, yardım etmemizi ve sonra listelememizi sağlar.

08:51.670 --> 08:57.700
Bunu yaptığımızda da, tıpkı burada olduğu gibi, bize belgeleri veriyor.

08:58.720 --> 09:00.820
Eğer, diyelim ki, listeye gidersek.

09:03.370 --> 09:03.910
Bakalım.

09:03.910 --> 09:05.470
Liste, liste, liste, liste.

09:06.130 --> 09:06.880
Tam burada.

09:06.880 --> 09:09.520
Bana belgeleri burada veriyor.

09:09.520 --> 09:12.160
Yani geçerli dosya için kaynak listele diyor.

09:12.610 --> 09:12.880
Tamam.

09:12.880 --> 09:15.940
Yani sadece yazdığımız kaynak kodu listeler.

09:16.030 --> 09:17.080
Tamam, bu harika.

09:17.080 --> 09:18.190
Başka ne var?

09:19.090 --> 09:25.330
Ayrıca step ya da kısaca se gibi bir şeyimiz var ve step gerçekten çok havalı.

09:26.970 --> 09:29.910
Aslında bunu en üste çıkarmak için clear kullanalım.

09:29.910 --> 09:33.720
Bu yüzden tüm araları temizlemek için temizle diyeceğim.

09:35.480 --> 09:36.230
Hadi yapalım.

09:37.400 --> 09:39.460
Görebilmeniz için bunu biraz daha büyütelim.

09:39.470 --> 09:39.970
Al bakalım.

09:39.980 --> 09:40.580
Bu daha iyi.

09:40.610 --> 09:40.880
Tamam.

09:40.880 --> 09:47.120
Böylece şimdi adım gibi bir şey yapabilirim ve adım bir sonraki satıra geçmemizi sağlayacak.

09:47.120 --> 09:49.850
Yani, bunu biraz daha büyütürsek.

09:50.860 --> 09:53.440
Adım diyecek ki, hey, dokuzuncu satıra git.

09:53.440 --> 09:54.370
Bakalım neler olacak.

09:54.370 --> 09:55.660
Adım yazacağım.

09:57.630 --> 09:57.840
Oh.

09:57.840 --> 09:58.860
Ve iki kez adım attım.

09:58.860 --> 09:59.910
O zaman doğru adımı atalım.

10:01.730 --> 10:02.600
Ve şuna bak.

10:02.720 --> 10:06.770
Kodumda bir sonraki satıra geçiyorum ve beni yakalıyor.

10:06.800 --> 10:08.030
Hey, yazım hatası mı var?

10:08.030 --> 10:08.510
Hata.

10:08.540 --> 10:09.520
Aldığımız hata.

10:09.530 --> 10:11.250
Buraya bir satır daha ekleyelim.

10:11.270 --> 10:19.640
Diyelim ki burada dört artı beşi toplamaya ya da dört ile beşi çarpmaya ve bunu bir değişkene

10:19.640 --> 10:22.310
atamaya çalışıyoruz.

10:24.170 --> 10:26.450
Eğer bunu durdurup tekrar çalıştırırsam.

10:28.570 --> 10:30.100
Şimdi içerideyim.

10:30.130 --> 10:30.820
Buraya.

10:32.640 --> 10:35.310
Çay yazınca bir isim çıkıyor.

10:35.310 --> 10:35.760
Hava.

10:35.880 --> 10:37.560
Çay tanımlanmamıştır çünkü.

10:37.560 --> 10:42.630
Sekizinci satırdaki kodun içindeyim ama henüz dokuzuncu satırı çalıştırmadık.

10:42.630 --> 10:44.220
O zaman adım atalım.

10:45.120 --> 10:46.800
Ve şimdi diğer taraftayım.

10:47.940 --> 10:52.950
Yani şimdi pt yaparsam hey t 20'ye eşit olur.

10:53.190 --> 10:53.760
Harika.

10:53.760 --> 10:57.570
Böylece kodun içinden adım adım geçebiliyorum ki bu gerçekten çok faydalı.

10:58.080 --> 11:03.720
Ayrıca bir şey döndürene kadar kod boyunca devam etmemi sağlayan continue gibi şeylerim var ve

11:03.720 --> 11:06.750
devam edip PDB'den çıkıyorum ve buna bakıyorum.

11:06.750 --> 11:07.620
Hata alıyorum.

11:10.100 --> 11:11.570
Şunu tekrar çalıştıralım.

11:11.600 --> 11:18.560
Bir başka kullanışlı komut da a'dır ve a aslında bana içinde bulunduğumuz fonksiyonun tüm argümanlarını verir.

11:18.560 --> 11:19.700
Şuna bir bak.

11:19.700 --> 11:22.610
Yine gerçekten faydalı olan tüm argümanları alıyorum.

11:23.240 --> 11:25.190
Ayrıca w komutu da vardır.

11:25.860 --> 11:31.050
Bu da bana yürütmekte olduğu mevcut satırın bağlamını gösterir.

11:32.200 --> 11:35.710
Burada nerede olduğumuzu görebilirsiniz, reklamdayız.

11:36.240 --> 11:36.990
Fonksiyon.

11:38.130 --> 11:43.740
Bu argümanlarla çağırdık ve şimdi bu satırı çalıştırmak üzereyiz.

11:45.970 --> 11:48.040
Ve son olarak, bunu hata ayıklarken.

11:48.040 --> 11:51.460
Pekala, sanırım sonunda bir hata olduğunu anladım.

11:51.460 --> 11:59.500
Buna bir sayı vermeliydik, böylece şimdi buradan çıkabilir ve bunu beşe sabitleyebilirim.

11:59.620 --> 12:02.950
Böylece artık PDB'mi ve her şeyi kaldırabilirim.

12:02.950 --> 12:05.410
Benim kodumla iyi çalışıyor olmalı.

12:06.680 --> 12:07.280
Harika.

12:07.760 --> 12:12.710
Bu yüzden PTB, kodunuzda adım adım ilerlemek, hata ayıklamak ve farklı şeyler denemek için harikadır.

12:12.710 --> 12:19.520
Biraz pratik gerektirir, ancak sadece PDB ile oynadığınız bir günün ardından, hata ayıklama konusunda gerçekten çok

12:19.520 --> 12:20.900
iyi hale geleceksiniz.

12:20.930 --> 12:28.730
Bu videodan sonra, PDB yazmanızı tavsiye ederim ve umarım yeterince büyük bir Python dosyanız vardır ve yardım

12:28.730 --> 12:37.010
kullanarak farklı komutları deneyebilir, listeyi kullanarak elinizde neler olduğunu görebilirsiniz.

12:38.060 --> 12:39.710
Aslında, size son bir şey daha göstermek istiyorum.

12:40.340 --> 12:44.210
Diyelim ki kodumuza, PDB set izimize geri dönüyoruz.

12:44.780 --> 12:45.800
Koş'a tıklıyorum.

12:47.670 --> 12:53.430
A yazdığımı fark ettiğimde böyle bir şey yapabilir miyim?

12:53.430 --> 13:00.330
Pekala, kodum çalışıyor, ancak iki numarayı şimdi anlamsız bir şeye eşit olacak şekilde değiştirebilir miyim?

13:02.230 --> 13:04.320
Bakalım şimdi ne yapacağım.

13:06.100 --> 13:08.740
Ve bu son satırı çalıştırmak için bir sonraki adımı atalım.

13:10.120 --> 13:11.140
Hava alıyorum.

13:11.200 --> 13:19.710
Böylece burada değişkenleri değiştirebilir ve fonksiyonlarımı test etmek için Python kodu yazabilirim.

13:19.720 --> 13:21.190
Bu şimdi çalışıyor.

13:21.190 --> 13:25.300
Test edebilirim, hey, bu değişkeni başka bir değerle değiştirirsek ne olur?

13:26.220 --> 13:28.050
Yine, çok, çok faydalı.
