🌟Python'da Önemli Hususlar
Python için bilmeniz ve öğrenmeniz gereken, faydalı olacak konular ve derlediğim bilgiler
🧐 Aceleci Olma Temel Kavramları Öğren
🤿 Python temellerini öğrenmeden proje işlerine girmeyin
📖 Terminolojiyi ve yazım kurallarını az da olsa bil
🪓 Eğer ağaç kesmen söylenirse, vaktinin çoğunu baltanı bilemek için kullan
😊 Sabırlı ol ve bu yazıyı sonuna kadar oku
👀 Python ile tüm kavramlara Getting Started with Python Programming alanından bakabilirsin
📂 Proje Yapını ve Ortamını Belirle
🏗️ Alttaki tüm dosya & dizinler
rootyani proje dizininde olmalıdır📈 Projende verimlilik için
venvkomutu ile sanal bir python ortamı oluşturman tavsiye edilir👷♂️
python3 -m venv venvkomutu ilevenvisimli sanal ortamı oluşturursun🌃 Oluşturulan sanal ortam, bilgisayarındaki python paketlerinden etkilenmez ve onları etkilemez
💁♂️ Sanallaştırma ile paket sürümlerindeki çakışmalardan kurtulmuş olursun
LICENSE
Projenin lisans bilgilerini taşır (Apache, MIT vs)
README
Projen hakkında açıklamalar ve dokümanlarına bağlantılara burada yer verirsin
requirements.txt
Projenin bağımlılıklarını tutar, pip freeze > requirements.txt komutu ile oluşturulur ve pip install -r requirements.txt komutu ile indirilir
tests
Projenin test metotlarının hepsi, tests dizininde saklanmalıdır
🤷♂️ Boşluk veya Tab Herhangi Birini Seç
🤯 Her ikisini birden kullanmaya çalışma, python bunu idare edemeyebilir
💫 Her proje için kendi tarzına göre boşluk ve tab verilerini birbirileri arasında dönüştür
🎯 Sadece tek bir yapıyı kullan, çok sık değiştirme
🖤 Komut İsteminden ipython Kullan
ipython Kullan💁♂️
pythonile terminalden hızlıca işlemler yapmak havalı geliyor ama kendine eziyet etme📈
ipythonsayesinde gelen kod tamamlamaları ve ekstra özelliklerle efektif ilerle📦
pip install ipythonkomutu ile indir veipythonkomutu ile kullan

📝 Değişken Tiplerini de Belirt
🙄 Değişken tipleri ile de mi uğraşacağım demeyin, tipler gereksiz uğraş değil avantajdır
🤯 Objenin tipini bilmemek, kodda karmaşıklığa sebep olacaktır
🧐
typingmodülü içerisindenDict,Listgibi sınıflar ile değişkenlerin tipini linter için belirle💁♂️ Tipleri bilen linter size doğru ve uygun kod önerileri de sunacaktır
👷♂️ Değişken tiplerini de kontrol ettirmek istersen
mypymodülüne bakabilirsin
👨💻 Alttaki kod parçasında yazım sırasında önerilerin düzgün olduğunu fark edeceksiniz
💎 Değişkenlere Farklı Tipler Atama
👮♂️ Her farklı obje için farklı isimlendirme yapılmalı
🙄 Aynı değişkene birden farklı obje atılması verimliliği artırmıyor
📦 Kütüphanelerden İşine Yarayanları Dahil Et
🤯 Paketin veya modülün tüm metotlarını
from ypackage import *şeklinde dahil etme kodunu karmaşıklaştırır👨💼 Sadece ihtiyacın olan metotları dahil et
from ypackage import write_fileve kodunda kullan💁♂️ Çok fazla metoduna ihtiyacın varsa ve kategorize etmek istersen
import cacheşeklinde dahil etcache.counter = 5olarak kullan
📖 Dictionary için get Kullan
get Kullan📈 Sözlükte olmazsa hata vermez, varsayılanı alırsın
💠 Switch-case yapıları için de kullanabilirsin
🆔 == ile is aynı değildir
== ile is aynı değildir💡 Öncelikle
==eşitlik sorgularken,isadres bilgisi (veya id) sorgular💁♂️ Primitif değişkenlerde (
int,bool… ) adresler değil değerler tutulur,isile==eş değerdir👮♂️ Objeler ve
list,dictgibi tipler için eş değer değildir
👮♂️ If - Else Yapılarını Kısaltın
🚄 Uzun yapı 1 gibi tekrarlı kontrolleri liste içerisine alın
🧐 Oluşturduğunuz liste için
andiçinallveyaoriçinanymetotlarını da kullanabilirsiniz👮♂️ Switch - Case yapıları için,
dictobjesi tanımlayın💾 Yapılacak fonksiyonları
dictiçerisine kaydedin🐣
dictüzerindengetmetodu ile fonksiyonları çağırın🤯 Kod karmaşıklığını azaltacaktır
📈 CPU kullanımını azaltıp, RAM kullanımı artıracaktır
🍢 Tek Satır Yapılarını Kullan
listvedictgibi yapılar için tek satırlık yapılar ile işini hızlıca halledebilirsin[ expression for item in list if conditional ]yapısı ilelistoluşturabilirsin{ expression for item in dict if conditional }yapısı iledictoluşturabilirsin[on_true] if [expression] else [on_false]yapısı ile koşullu atama yapabilirsina < b < cgibi zincirleme yapıları python destekler
🤹♂️ Sık Kullanılabilecek İşlemleri Bil
setküme yapısı ile sadece eşsiz verileri tutarsınmaxyapısı ile verilenkey'e göre en yüksek değerleri bulmapyapısı ile üzerinde gezinebilir (ilst, set vs) verilerde her veri için fonksiyon çalıştırcollections.Counteryapısı ile veri listesi içerisindeki elemanları saydateutil.parser.parseile loglardan zaman bilgilerini rastgele konumlarda da olsa çekchardetile dosya içerisindeki metinleri inceleyebilirsin
🔤 String İşlemlerine Hakim Ol
🌟 En çok kullanılan değişken türlerindendir ve hayatında çoooook sık karşılaşacaksın
💁♂️ String bir
chardizisi olduğundanlistözelliklerini de taşırstring[başlangıç:son:adım]
💠 Fonksiyonları Efektif Kullan
💁♂️ Fonksiyonlar birden fazla değişken döndürebilir (
tuple) ve bunu efektif kullanmak yararınadır🏷️ Parametre ve dönüş bilgilerini
typingmodülü ile belirt🔚 Dönüş tipi
-> <tip>şeklinde belirtilir
🍎 Class Yapıları İle OOP Kodlama Yap
🤯 İç içe karmaşık fonksiyonlar yerine sınıf yapıları ile anlaşılabilir bir düzen kur
🍏
dataclassile veri sınıfları tanımla💠
__repr__, ve__eq__metotları otmatik olarak tanımlanır💎
typezorunluluğu olduğundan ileride veri atama sorunlarını engeller
📢Python içerisinde
thisyerineselfile sınıf varlıklarına erişilir
💠 Özel Sınıf Metotlarını Kullanın
__init__
Sınıf oluşturulduğunda çağırılır (constructor)
__str__
Sınıf str, f"{}" veya print ile yazdırılmak istendiğinde çağırılır
__repr__
Debug işlemleri sırasında sınıf hakkında bilgileri verir (VS Code Debug metinleri vs)
__eq__
Sınıf arasında eşitlik kıyaslaması yapıldığında çalışır (a == b)
__hash__
Dict gibi işlemlerde key olarak sınıfın kullanılması için hashable olması gerekir hash(str(self)) şeklinde kullanılabilir
🏷️ Decorator Yapısı ile Tekrarlı Kodlardan Sakın
➕ Decorator yapısı fonksiyonların üstüne
@ile eklenen fonksiyonlardır🌊 Fonksiyon her çağırıldığında önce
@ile eklenen fonksiyon çalışır sonra istenen çağırılır👮♂️ API işlemlerinde yetki kontrolleri için kullanılması zaman kazandırır
💁♂️
@functools.wraps(func)decorator yapısı ile asıl fonksiyonun__name__gibi karakter özellikleri saklanır (aksi halde__name__değeri@olan fonksiyonun ismini verir)
📜 print'ten Vazgeç logger ile Raporlama Yap
print'ten Vazgeç logger ile Raporlama Yap🎨 Öncelikle
colorlogile renkli raporlama yapabilirsin📦 import logging ile log paketini indirin
https://github.com/yemreak/blog/blob/main/docs/tr/arsiv/python/temel/raporlama.mdBuraya detaylı bilgi sonradan eklenecek
🔗 Faydalı Bağlantılar
🚀 Bu alandaki bağlantılar YEmoji ~Bağlantılar yapısına uygundur
Last updated
Was this helpful?