Python ile Programlama · Ünite 1
Python'a Giriş ve Geliştirme Ortamı
10 soruluk deneme testine geç ↓1. Programlama ve Python'un yeri
Programlama, bir problemin çözümünü bilgisayarın uygulayabileceği adımlara dökmek. İnsan belirsizliği tolere eder, bilgisayar etmez; bu yüzden her ayrıntı tek tek ve kesin yazılmalı. Bu talimatların yazıldığı dile programlama dili denir.
- →Söz dizimi (syntax): bir komutun nasıl yazılacağının kuralları.
- →Anlam bilim (semantics): o komut çalışınca ne yapacağı.
- →Deyim (statement): programın en küçük parçası. Deyimler → işlevler → modüller → yazılım.
Dilleri iki eksende ayırmak
| Eksen | Bir uç | Öbür uç |
|---|---|---|
| Soyutlama | Düşük seviye: makine kodu (0-1), Assembly | Yüksek seviye: insan diline yakın — Python, Java, JavaScript |
| Çalışma modeli | Derlenen: önce tümü makine koduna çevrilir — C, C++, Rust, Go | Yorumlanan: çalışırken satır satır işlenir — Python, Ruby, PHP, JavaScript |
| Python | Java | C++ | |
|---|---|---|---|
| Tür | Yorumlanan (bytecode) | Derlenen + JVM | Derlenen |
| Tip sistemi | Dinamik | Statik | Statik |
| Hız | Orta | Hızlı | Çok hızlı |
| Bellek yönetimi | Otomatik | Otomatik | Elle |
| Tipik kullanım | Veri, YZ, web | Kurumsal | Sistem, oyun |
Kısa tarih ve isim
- →Aralık 1989: Guido van Rossum, Amsterdam'daki CWI'da Noel tatili projesi olarak başladı. Eğitim dili ABC'nin eksiklerini kapatmak istiyordu.
- →Şubat 1991: ilk açık sürüm, Python 0.9.0.
- →2000: Python 2.0. Aralık 2008: Python 3.0 — bilerek geriye uyumsuz. Ocak 2020: Python 2'nin desteği bitti.
- →İsmi yılandan değil, İngiliz komedi grubu Monty Python'dan geliyor. Bu yüzden örneklerde «foo, bar» yerine «spam, eggs» görürsün.
Nerelerde kullanılıyor?
Python genel amaçlı bir dil: tek bir alana bağlı değil.
- →Web: Django ve Flask çerçeveleri (framework). Instagram'ın arka ucu Django; Dropbox da Python üzerine kurulu.
- →Veri bilimi ve YZ: NumPy, pandas (veri), scikit-learn (makine öğrenmesi), TensorFlow ve PyTorch (derin öğrenme). Bu alanda fiilî standart.
- →Bilim: NASA JPL, uzay görevlerinde Python tabanlı araçlar kullanıyor.
- →Otomasyon ve eğitim: tekrarlayan işleri birkaç satırda otomatikleştiren «yapıştırıcı dil»; birçok üniversitede ilk öğretilen dil.
Python'un felsefesi: PEP 8 ve PEP 20
PEP, Python için önerilen değişiklikleri anlatan resmî belge. İki ünlüsü:
- →PEP 8 — stil kılavuzu. Felsefesi: «Kod, yazıldığından çok daha fazla okunur.» Girinti 4 boşluk, satır en fazla 79 karakter, değişken ve fonksiyon adları snake_case, sınıf adları CamelCase, sabitler BÜYÜK_HARF. Denetim araçları: flake8, pylint, black.
- →PEP 20 — The Zen of Python. Tim Peters'ın 19 kısa ilkesi. Yorumlayıcıya import this yazınca ekrana gelir. En bilinenleri: «Okunabilirlik önemlidir» ve «Bir işi yapmanın tercihen tek bir açık yolu olmalı».
# PEP 8'e uygun adlandırma
ogrenci_sayisi = 42 # değişken: snake_case
MAX_KAPASITE = 50 # sabit: büyük harf
def ortalama_hesapla(): # fonksiyon: snake_case
...
class OgrenciKaydi: # sınıf: CamelCase
...2. Kurulum ve IDE seçimi
Python ile çalışmak için iki katman gerekir: kodu çalıştıran yorumlayıcı ve kodu rahat yazdığın geliştirme ortamı.
- →REPL (Read-Eval-Print Loop): terminale python yazınca açılan etkileşimli mod. >>> isteminde yazdığın her satır anında çalışır. Python 3.13 ile renkli, çok satırlı düzenlenebilen yeni bir REPL geldi.
- →IDE (Tümleşik Geliştirme Ortamı): editör + hata ayıklayıcı + otomatik tamamlama + terminal bir arada. Düz metin editöründen farkı çalıştırma ve hata ayıklama araçlarını da içermesi.
İşletim sistemine göre kurulum
| Sistem | Yol | Dikkat |
|---|---|---|
| Windows | python.org'dan .exe yükleyici | «Add python.exe to PATH» kutusunu mutlaka işaretle |
| macOS | .pkg yükleyici ya da Homebrew: brew install python | python eski 2.x'i açabilir → python3 kullan |
| Linux | sudo apt install python3 python3-venv | Güncel sürüm için deadsnakes PPA |
python --version
# Python 3.x.x
python -c "print('Merhaba')"
# MerhabaPATH ve en sık hata
PATH, işletim sisteminin bir komut yazıldığında programı aradığı klasörlerin listesi. Windows'ta girdiler noktalı virgülle (;), Linux/macOS'ta iki noktayla (:) ayrılır.
Hangi IDE?
| IDE | Kimden | Artısı | Eksisi |
|---|---|---|---|
| IDLE | Python ile birlikte gelir | Sıfır kurulum | Sınırlı özellik, Git yok |
| Thonny | Tartu Üniversitesi (Estonya) | Adım adım çalıştırma, değişkenleri görme; içinde Python gelir | Büyük projeye yetmez |
| VS Code | Microsoft (açık kaynak) | Eklentiler, IntelliSense, terminal | İlk ayar zaman alır |
| PyCharm | JetBrains | Derin kod analizi, akıllı tamamlama | Çok RAM yer |
| Jupyter Notebook | Project Jupyter | Hücre hücre kod + metin + grafik; veri analizi | Genel yazılım için uygun değil |
3. Yorumlayıcı ve ilk program
Bilgisayarındaki Python aslında CPython: C ile yazılmış, resmî (referans) uygulama. Bir .py dosyasını çalıştırınca arka planda beş adım olur:
- →Okuma: dosya UTF-8 olarak açılır.
- →Sözcüksel analiz: kod en küçük anlamlı parçalara (token) bölünür.
- →Söz dizimi analizi: tokenlar kurallara göre bir ağaca dönüşür: AST (Soyut Söz Dizim Ağacı).
- →Bytecode derleme: AST platformdan bağımsız bytecode'a çevrilir, __pycache__ klasöründe .pyc olarak saklanır.
- →Yürütme: PVM (Python Sanal Makinesi) bytecode'u çalıştırır.
Ayrı bir derleme adımı yok ve bytecode her sistemde aynı → kod her yerde değişmeden çalışır. Bedeli: C'ye göre daha yavaş.
| Çalıştırma kipi | Komut |
|---|---|
| Etkileşimli (REPL) | python |
| Betik (dosya) | python dosya.py |
| Tek komut | python -c "komut" |
REPL bir hesap makinesi
>>> kisa = 12 >>> uzun = 30 >>> kisa * uzun 360 >>> 2 ** 8 256
print(), yorum ve docstring
print() değerleri ekrana yazan yerleşik fonksiyon. sep değerlerin arasına, end satır sonuna ne konacağını belirler (varsayılanlar: boşluk ve yeni satır). Python 2'de deyimdi, Python 3'te fonksiyon oldu.
"""selam.py — ilk Python programım."""
# Bu satır yorum: Python bunu hiç çalıştırmaz
print("Merhaba Dünya!")
print("Ankara", "İzmir", "Bursa", sep=" / ", end=".\n")Merhaba Dünya! Ankara / İzmir / Bursa.
- →Yorum: # ile başlar, satır sonuna kadar sürer, yorumlayıcı tamamen atlar.
- →Docstring: üç tırnak arasındaki metin. Yorum değil, aslında bir dizedir; modül/fonksiyon/sınıfın ilk satırındaysa __doc__'a bağlanır ve help() ile görülür. İkisi de ekrana çıktı vermez.
f-string
Python 3.6'dan beri: dizenin önüne f koy, süslü parantez içine değişken ya da ifade yaz. + ile birleştirmekten daha kısa ve okunaklı.
sehir = "Eskişehir"
gun = 3
print(f"{sehir} gezisi {gun} gün, yani {gun * 24} saat.")
# Eskişehir gezisi 3 gün, yani 72 saat.4. Sanal ortam ve paket yönetimi
Normalde pip ile kurulan her paket tek bir ortak klasöre (site-packages) gider. Bir proje bir paketin eski sürümünü, başka proje yenisini isterse ikincisi birincinin üzerine yazar. Buna bağımlılık çakışması denir. (Bağımlılık: projenin çalışması için gereken dış paketler.)
Çözüm sanal ortam (virtual environment): her projeye kendi site-packages'ı, kendi pip'i olan izole bir klasör. Fikir 2007'de virtualenv ile çıktı, 2011'de PEP 405 ile resmîleşti, Python 3.3'ten beri venv modülü olarak hazır geliyor.
# Windows python -m venv proje_env proje_env\Scripts\activate # macOS / Linux python3 -m venv proje_env source proje_env/bin/activate # İkisinde de pip install requests pip freeze > requirements.txt deactivate
- →Etkinleştirme (activate): ortamın Scripts/ (Windows) ya da bin/ klasörünü PATH'in başına ekler; artık python ve pip o ortamı kullanır. Terminalin başında (proje_env) görürsün.
- →Klasör yapısı: Scripts/ ya da bin/ (yorumlayıcı, pip, activate), site-packages/ (paketler), pyvenv.cfg (klasörün sanal ortam olduğunu Python'a söyleyen dosya).
- →deactivate ile çıkılır, PATH eski hâline döner.
pip komutları
| Komut | Ne yapar? |
|---|---|
| pip install paket | PyPI'dan en son sürümü kurar |
| pip install paket==2.1.0 | Belirli bir sürümü kurar |
| pip install --upgrade paket | Günceller |
| pip uninstall paket | Kaldırır |
| pip list | Kurulu paketleri tablo hâlinde gösterir (pip'in kendisi dahil) |
| pip show paket | Bir paketin ayrıntıları |
| pip freeze | paket==sürüm biçiminde liste; pip'i dışarıda bırakır |
| pip install -r requirements.txt | Dosyadaki bütün paketleri kurar |
requirements.txt: projenin bütün bağımlılıklarını sürümleriyle listeleyen düz metin dosyası. pip freeze > requirements.txt ile ortamın fotoğrafı çekilir, Git'e eklenir; projeyi alan kişi yeni bir ortam kurup pip install -r requirements.txt ile birebir aynı ortamı birkaç dakikada kurar. «Bende çalışıyordu» tartışması biter.
Kendini test et!
Cevabı görmek için soruya dokun.
1.Python'un adı nereden gelir?
✓ İngiliz komedi grubu Monty Python'dan (BBC dizisi Monty Python's Flying Circus); yılandan değil.
2.Python neden «saf yorumlanan dil» değildir?
✓ Kaynak kod önce bytecode'a (.pyc) derlenir, sonra Python Sanal Makinesi (PVM) bu bytecode'u çalıştırır.
3.PEP 8'e göre «toplam_puan» ve «OgrenciListesi» adları neye uygundur?
✓ toplam_puan snake_case olduğu için değişken/fonksiyon adı; OgrenciListesi CamelCase olduğu için sınıf adı.
4.Kurulumdan sonra «'python' is not recognized» hatası alınıyor. Sebep ve çözüm nedir?
✓ Python klasörü PATH'te değil. Yükleyiciyi Modify ile çalıştırıp «Add Python to environment variables» işaretlemek (ya da Path'e elle eklemek) ve terminali yeniden açmak gerekir.
5.print("A", "B", sep="-", end="?") ne yazdırır?
✓ A-B? (Değerlerin arasına -, sonuna yeni satır yerine ? konur.)
6.f-string'te {} içine ne yazılabilir?
✓ Bir değişken adı ya da {fiyat * 2} gibi bir ifade; Python ifadeyi hesaplayıp sonucu metne yerleştirir.
7.Arkadaşın requirements.txt olan bir proje gönderdi. Hangi komutları hangi sırayla çalıştırırsın?
✓ python -m venv env → env\Scripts\activate (Windows) ya da source env/bin/activate → (env) ön ekini kontrol et → pip install -r requirements.txt.
8.Bir klasörün sanal ortam olduğunu Python nereden anlar?
✓ İçindeki pyvenv.cfg dosyasından (PEP 405).
Deneme testi
Sınavda çıkabilecek türden 10 soru. Bir şık seç; doğru cevap ve açıklaması hemen çıkar.
1.Python programlama dili adını nereden almıştır?
2.Python kaynak kodu çalıştırılmadan önce hangi ara biçime derlenip .pyc dosyalarında saklanır?
3.PEP 8'e göre bir sınıf adı nasıl yazılmalıdır?
4.Python yorumlayıcısına «import this» yazıldığında ekrana ne gelir?
5.Kurulumdan sonra terminalde «'python' is not recognized…» hatası alınıyor. En olası sebep nedir?
6.Python'da bytecode'u çalıştıran bileşen hangisidir?
7.print("A", "B", sep="-", end="?") komutunun çıktısı nedir?
8.Bir projenin bağımlılıklarını sürümleriyle requirements.txt dosyasına yazmak için hangi komut kullanılır?
9.Bir klasörün sanal ortam olduğunu Python hangi dosyadan anlar?
10.Sanal ortam etkinleştirilmeden pip install komutu çalıştırılırsa ne olur?
Bu not ders kitabının yerine geçmez; konu kendi cümlelerimizle, yapay zekâ desteğiyle özetlendi.