🌟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
root
yani proje dizininde olmalıdır📈 Projende verimlilik için
venv
komutu ile sanal bir python ortamı oluşturman tavsiye edilir👷♂️
python3 -m venv venv
komutu ilevenv
isimli 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
🧙♂ Detaylı bilgi için 📃 Python Pro Tips alanına bakabilirsin.
🖤 Komut İsteminden ipython
Kullan
ipython
Kullan💁♂️
python
ile terminalden hızlıca işlemler yapmak havalı geliyor ama kendine eziyet etme📈
ipython
sayesinde gelen kod tamamlamaları ve ekstra özelliklerle efektif ilerle📦
pip install ipython
komutu ile indir veipython
komutu 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
🧐
typing
modülü içerisindenDict
,List
gibi 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
mypy
modü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
🧙♂ Detaylı bilgi için 📖 Dynamic Typing alanına bakabilirsin.
📦 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_file
ve kodunda kullan💁♂️ Çok fazla metoduna ihtiyacın varsa ve kategorize etmek istersen
import cache
şeklinde dahil etcache.counter = 5
olarak 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
🧙♂ Detaylı bilgi için 📃 Python Pro Tips alanına bakabilirsin.
🆔 ==
ile is
aynı değildir
==
ile is
aynı değildir💡 Öncelikle
==
eşitlik sorgularken,is
adres bilgisi (veya id) sorgular💁♂️ Primitif değişkenlerde (
int
,bool
… ) adresler değil değerler tutulur,is
ile==
eş değerdir👮♂️ Objeler ve
list
,dict
gibi tipler için eş değer değildir
🧙♂ Detaylı bilgi için 📃 Python Pro Tips alanına bakabilirsin.
👮♂️ 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
and
içinall
veyaor
içinany
metotlarını da kullanabilirsiniz👮♂️ Switch - Case yapıları için,
dict
objesi tanımlayın💾 Yapılacak fonksiyonları
dict
içerisine kaydedin🐣
dict
üzerindenget
metodu ile fonksiyonları çağırın🤯 Kod karmaşıklığını azaltacaktır
📈 CPU kullanımını azaltıp, RAM kullanımı artıracaktır
🧙♂ Detaylı bilgi için 📃 Switch Case Kullanmadan Kod Yazabilmek alanına bakabilirsin.
🍢 Tek Satır Yapılarını Kullan
list
vedict
gibi 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ı ilelist
oluşturabilirsin{ expression for item in dict if conditional }
yapısı iledict
oluşturabilirsin[on_true] if [expression] else [on_false]
yapısı ile koşullu atama yapabilirsina < b < c
gibi zincirleme yapıları python destekler
🤹♂️ Sık Kullanılabilecek İşlemleri Bil
set
küme yapısı ile sadece eşsiz verileri tutarsınmax
yapısı ile verilenkey
'e göre en yüksek değerleri bulmap
yapısı ile üzerinde gezinebilir (ilst, set vs) verilerde her veri için fonksiyon çalıştırcollections.Counter
yapısı ile veri listesi içerisindeki elemanları saydateutil.parser.parse
ile loglardan zaman bilgilerini rastgele konumlarda da olsa çekchardet
ile 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
char
dizisi 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
typing
modü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
🍏
dataclass
ile veri sınıfları tanımla💠
__repr__
, ve__eq__
metotları otmatik olarak tanımlanır💎
type
zorunluluğu olduğundan ileride veri atama sorunlarını engeller
📢Python içerisinde
this
yerineself
ile 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
colorlog
ile renkli raporlama yapabilirsin📦 import logging ile log paketini indirin
📜RaporlamaBuraya detaylı bilgi sonradan eklenecek
🔗 Faydalı Bağlantılar
🚀 Bu alandaki bağlantılar YEmoji ~Bağlantılar yapısına uygundur
Last updated