Python'da Önemli Hususlar
Python için bilmeniz ve öğrenmeniz gereken, faydalı olacak konular ve derlediğim bilgiler
Last updated
Was this helpful?
Python için bilmeniz ve öğrenmeniz gereken, faydalı olacak konular ve derlediğim bilgiler
Last updated
Was this helpful?
🤿 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 alanından bakabilirsin
🏗️ Alttaki tüm dosya & dizinler root
yani proje dizininde olmalıdır
📈 Projende verimlilik içinvenv
komutu ile sanal bir python ortamı oluşturman tavsiye edilir
👷♂️python3 -m venv venv
komutu ile venv
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
🤯 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
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 ve ipython
komutu ile kullan
🙄 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çerisinden Dict
, 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
👮♂️ Her farklı obje için farklı isimlendirme yapılmalı
🙄 Aynı değişkene birden farklı obje atılması verimliliği artırmıyor
🤯 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 et cache.counter = 5
olarak 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💡 Ö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
🚄 Uzun yapı 1 gibi tekrarlı kontrolleri liste içerisine alın
🧐 Oluşturduğunuz liste için and
için all
veya or
için any
metotlarını da kullanabilirsiniz
👮♂️ Switch - Case yapıları için, dict
objesi tanımlayın
💾 Yapılacak fonksiyonları dict
içerisine kaydedin
🐣 dict
üzerinden get
metodu ile fonksiyonları çağırın
🤯 Kod karmaşıklığını azaltacaktır
📈 CPU kullanımını azaltıp, RAM kullanımı artıracaktır
list
ve dict
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ı ile list
oluşturabilirsin
{ expression for item in dict if conditional }
yapısı ile dict
oluşturabilirsin
[on_true] if [expression] else [on_false]
yapısı ile koşullu atama yapabilirsin
a < b < c
gibi zincirleme yapıları python destekler
set
küme yapısı ile sadece eşsiz verileri tutarsın
max
yapısı ile verilen key
'e göre en yüksek değerleri bul
map
yapısı ile üzerinde gezinebilir (ilst, set vs) verilerde her veri için fonksiyon çalıştır
collections.Counter
yapısı ile veri listesi içerisindeki elemanları say
dateutil.parser.parse
ile loglardan zaman bilgilerini rastgele konumlarda da olsa çek
chardet
ile dosya içerisindeki metinleri inceleyebilirsin
🌟 En çok kullanılan değişken türlerindendir ve hayatında çoooook sık karşılaşacaksın
💁♂️ String bir char
dizisi olduğundan list
özelliklerini de taşır string[başlangıç:son:adım]
💁♂️ 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
🤯 İç 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
__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ı 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🎨 Öncelikle colorlog
ile renkli raporlama yapabilirsin
📦 import logging ile log paketini indirin
Buraya detaylı bilgi sonradan eklenecek
🧙♂ Detaylı bilgi için alanına bakabilirsin.
🧙♂ Detaylı bilgi için alanına bakabilirsin.
🧙♂ Detaylı bilgi için alanına bakabilirsin.
🧙♂ Detaylı bilgi için alanına bakabilirsin.
🧙♂ Detaylı bilgi için alanına bakabilirsin.
🚀 Bu alandaki bağlantılar yapısına uygundur