Bu noktaya kadar Python kodumuzu organize etmenin birkaç yolunu öğrendik.
İyi yaptığımız ilk şey, Python'u bir dosyaya yazdık ve bu onu organize etti, değil mi?
Tüm kodumuz şimdiye kadar tek bir dosya üzerindeydi.
Kodumuzu düzenlememizin bir yolu da buydu.
Daha sonra fonksiyonları öğrendik ve fonksiyonlar tekrar tekrar kod yazmamamız için bir yol
olarak kullanıldı.
Dosyamızda istediğimiz yerde kullanabileceğimiz fonksiyonlar yazabiliriz, böylece bu fonksiyonları tekrar
tekrar çağırabiliriz ve kodumuzun anlamlı olması için fonksiyonları uygun şekilde adlandırabiliriz.
Ve sonra sınıfları öğrendik.
Nesneler oluşturabileceğimiz bu planları yazın.
Bize verilenlerin ötesinde yeni Python veri türlerini örnekleyebiliriz, değil mi?
Sadece sözlüklere ve listelere sahip olmak yerine, kendi özel sözlüklerimizi, kendi listelerimizi, belki de ekstra özelliklere
sahip olanları oluşturabiliriz.
Kodumuzu düzenlemek için sınıfları kullanabilir ve her sınıfa kullanmamız için güzel bir şekilde paketleyen
belirli bir yöntem ve özellik verebiliriz.
Ayrıca fonksiyonel programlamayı ve fonksiyonel programlamada çok sayıda sınıf gördüğümüz nesne
yönelimli programlamanın aksine, sadece çok sayıda fonksiyon, çok sayıda saf fonksiyon kullandığımızı
ve bu fonksiyonlara aktardığımız bir veriye sahip olduğumuzu ve işleri küçük küçük parçalar halinde organize ettiğimizi
öğrendik.
Tüm bunlar kodumuzu temiz tutmamız, kodumuzu daha sürdürülebilir hale getirmemiz ve böylece kodumuzu düzenli
tutmamız içindi.
Çünkü daha fazla kod satırı yazdıkça, her şeyi aklınızda tutmak gittikçe zorlaşıyor.
Diğer insanlar projenizde çalışmak için ekibinize katılırsa, işlerin nasıl yürüdüğünü anlamanın kolay bir yoluna ihtiyaçları
vardır.
Ama hâlâ bir sorunumuz var.
Ve bu sorun, her şeyin bu tek dosyada yer almasıdır.
Yazdığımız tüm fonksiyonlar, tüm sınıflar sadece tek bir nokta PI dosyası üzerindeydi.
Ancak gerçek hayatta durum böyle değildir.
Çok daha fazla kodumuz var ve milyonlarca satır kod içeren tek bir dosyaya sahip olamayız.
Peki nasıl düzenli kalabiliriz?
Pekala.
Python'un birden fazla dosyasına sahip olsaydık.
Bunun gibi çünkü projemiz gittikçe büyüyor.
Bu işe yarar mı?
Tüm bu dosyaları birbirine bağlamamızın bir yolu var mı?
Aslına bakarsanız, tüm sektörde çok yaygın bir uygulama var ve biz buna kod modüllerini
organize etme yolu diyoruz.
Modüller ise basitçe bu dosyalardır.
Bu dosyaların her biri, her dot pi dosyası bir modüldür.
Ve bu modülleri oluşturarak, farklı işlevler oluşturmuş gibi, farklı sınıflar oluşturmuş gibi oluruz
çünkü bu dosyaların içinde sınıflarımız olabilir, işlevlerimiz olabilir ama aynı zamanda farklı dosyalarımız
da olabilir.
Yani kodumuzu bölmek için bir üst katman.
Ve bu bölümde modüller hakkında her şeyi öğreneceğiz ve bu konuda uzmanlaşmaya çalışacağız ve nasıl düzenli kod yazabileceğimizi
göreceğiz.
Bir göz atalım.
Burada görebilirsiniz, dalgalanmamızdaki dosyalara tıklarsam, bir ana pi'miz var ve Çalıştır'a her tıkladığımda
bu dosya çalıştırılıyor.
Peki ya daha fazla dosyamız varsa?
Buraya başka bir dosya eklesem ve adını Utility Dot Pi koysak nasıl olur?
Seni gördüğüm kadarıyla.
Bu iki şey ne?
Onlar modül, değil mi?
Main Pi bir modül yardımcı programıdır.
PI bir modüldür.
Ve modül yazarken Python'daki değişkenlerle aynı prensipleri kullanırız, ki bu yılan vakasıdır.
Yani, boşluk varsa alt çizgi kullanırız, her şey küçük harftir.
Peki bu modülleri nasıl böleceğiz?
Ve bu pratikle gelir.
Yeni başladığınızda şunu söylemek zor, hey, hangi dosyaya ne giriyor, hangi dosyaya ne giriyor?
Ama derslere benziyor, değil mi?
Fonksiyonlara benzer.
Kodumuzu mantıklı parçalara bölmek istiyoruz.
Yine diyelim ki Netflix'te çalışıyoruz.
Videolara adanmış bir dosyamız olabilir, bir kullanıcının oturum açmasına adanmış başka bir dosyamız veya modülümüz olabilir, belki
de analitiklere ve kullanıcılar için önerileri bulmaya adanmış başka bir dosyamız olabilir.
Bu sınıfları ve fonksiyonları anlamlı bir dosya içinde bir araya getirmek istiyoruz.
Şimdi, bir modülü kullanmanın en yaygın yollarından biri yardımcı program gibi bir şeydir.
Diyelim ki bir yardımcı modül oluşturmak istiyoruz, bu modül çok sayıda iyi, bir tür alet kemeri gibi, projemizin her
yerinde kullanabileceğimiz çok basit işlevlere sahip bir modüldür, çünkü burada birden fazla dosyaya sahip olduğumuzu
hayal edebiliriz.
Öyleyse çok basit bir örnek oluşturalım.
Burada bir çarpma fonksiyonunun var olduğunu söyleyeceğim.
Bu da hissizleşmeyi ve hissizleşmeyi gerektirir.
Ve burada basitçe geri döneceğiz.
Ve bir kez çok basit bir fonksiyona karşı hissizleştim.
Ve bir kez daha, bir bölme fonksiyonumuz da olacak.
Ve evet, bu biraz işe yaramaz çünkü sadece artı veya bölme, operand ve python kullanabiliriz.
Ama benimle kal.
Burada size bir örnek göstermeye çalışıyorum.
Pekala, şimdi iki, bir rakamını iki rakamına bölerek döndüreceğim.
Güzel ve basit.
Yani bu.
Bizim için tüm bu işlevlere sahip olan yardımcı modülümüzdür.
Şimdi bu dosyada aslında hiçbir şey yapmadığımıza dikkat edin.
Sadece işlevleri tanımlıyorum, ancak hiçbir işlevi çalıştırmıyorum.
Ancak diyelim ki bu yardımcı modülümüz var ve ben bunu ana py dosyamda kullanmak istiyorum.
Bunu nasıl yapabiliriz?
Bu iki dosya arasında iletişim kurmanın yolu oldukça basittir.
Tek yapmamız gereken içe aktar komutunu kullanmak ve ardından içe aktarmak istediğimiz dosya adını vermek.
Ne ithal etmek istiyoruz?
Bu şekilde hizmet ithal etmek istiyoruz.
Py noktasını eklemediğime dikkat edin çünkü içe aktaracağımız şeyin bir python dosyası olacağını
varsayıyoruz.
Yani bunu yapmamıza gerek yok.
Sadece isim.
Aynen böyle.
Şimdi, yardımcı programı buraya yazdıralım.
Eğer bunu çalıştırırsam.
Vay be.
Bunu gördün mü?
Bir modül yardımcı programımız var.
Ve sonra bu web sitesinin bizim için oluşturduğu bir dosya yolu, bu yüzden gerçekten önemli değil.
Şimdi, burada olan birkaç şey var.
Birincisi, bu py cache klasörünü alt çizgi, alt çizgi, py cache olarak oluşturduk.
Ve.
Aman Tanrım.
Bu saçmalık da ne?
Hmm.
Bu oldukça kafa karıştırıcı, değil mi?
Bu pasta önbelleği, diyelim ki içe aktarma ifadeleri içeren bir dosyayı her çalıştırdığımızda oluşturulur.
Yani modülleri kullanırken.
Gördüğünüz gibi, Çalıştır'a tıkladığımızda Pi Cash ne yapıyor?
Yorumlayıcı bu podcast klasörünü oluşturacak ve diyecek ki, Hey, bu dosyayı çalıştırıyorum,
bu bir ana pi dosyası, py dosyası içe aktarılmayan herhangi bir şey, diyelim ki yardımcı program.
Bizim durumumuzda bunu nakde çevireceğim.
Bakın burada nasıl nokta pi yazıyor.
Bunun nedeni C Python yorumlayıcısını kullanıyor olmasıdır.
Unutmayın, bu C python yorumlayıcısı ve C ile yazılmış, yani bu aslında derlenmiş bir dosya, böylece bir
dahaki sefere ana pi'mde çalıştır'a tıkladığımda hiçbir şey değişmeyecek çünkü olacak olan şey pi yardımcı programını
yüklemek yerine, yardımcı programın bu derlenmiş sürümünü yüklemek olacak çünkü hiçbir şey değişmedi.
Ve yardımcı pi.
Bu da işleri hızlandırıyor.
Main Pi'yi tekrar çalıştırmayı denediğimde, önbelleğe almanın bu olduğunu gördüm.
Önbelleğe alma, hey, bunu hatırlayacağım ve bu derleme sürümüdür, böylece derleme
adımından tekrar geçmek zorunda kalmam.
Ancak ana pi dosyasının derlenmediğine dikkat edin çünkü her seferinde onu çalıştırıyoruz.
Şimdi, fayda fonksiyonunu bölme işlemini içermeyecek şekilde değiştirirsek, çalıştır'a tıklarım ve burada bunu fark etmezsiniz.
Ancak şimdi farklı bir dosyamız olduğu için bu yeniden çalıştırıldı.
Gördüğünüz gibi burada çoğaltma var ama bölme yok.
Bölünmeyi tekrar gündeme getirelim.
Buraya geri dönün, çalıştır'a tıklayın.
Ve işte oldu.
Artık burada da bölünme var.
Ama bu bizim dokunmadığımız bir şey.
Bu, kullandığımız herhangi bir editörle birlikte kaputun altından gelir.
Birkaç videoda, pasta grafik gibi bir şey kullandığımızda da bunun nasıl gerçekleştiğini göstereceğiz.
Bu sadece editörlerin programlarımızın daha hızlı çalışabilmesi için yapmamıza izin verdiği bir şeydir.
Yani artık erişimim var.
Bunu biraz daha küçültelim.
Artık kamu hizmetlerine erişimim var.
Ve işte işin ilginç kısmı.
Eğer burada nokta yaparsam, şuna bak.
Bölme ve çarpma işlemlerine erişimim var, böylece sayıları çarpabiliyorum.
Diyelim ki iki ve üç tıklama koşusu.
Ve yardımcı program modülünü ana dosyamda kullanabiliyorum.
Çok, çok havalı.
Eğer bölme yaparsam ve çalıştır'a tıklarsam.
Bunu da kullanabilirim.
Çok, çok havalı.
Ve burada farklı bir dosyam varsa ve başka bir şeyi içe aktarmak istersem istediğim kadar içe aktarabilirim,
diyelim ki dosyaya bir yardımcı program var.
Bunu içe aktarabilir ve istediğim kadar çok şeyi içe aktarabilir ve dosyalarımda kullanabilirim.
Ne kadar havalı değil mi?
Artık kodumuzu düzenlemek ve tüm bu dosyaların birlikte iletişim kurmasını sağlamak için bir yolumuz var.
Çünkü gerçek hayatta büyük projelerimiz var ve bu büyük projeler üzerinde farklı ekipler, farklı
programcılar çalışacak.
Ve tüm bu dosyalarla çalışmak için bir yola ihtiyacımız var.
Ve modüller arasında import deyimlerini kullanarak, tıpkı fonksiyonların farklı dosyalar arasında bize sağladığı
işlevselliği kullanabildiğimiz gibi, işlevselliği kullanabiliyoruz.
Ve çoğu zaman, eğer bir şirkette çalışıyorsanız, bir dot pi dosyasındaki ilk birkaç satır genellikle içe
aktarma ifadeleridir çünkü genellikle diğer dosyalarla iletişim kurarsınız.
Bir sonraki videoda biraz daha öğrenelim.