Python ile Programlama · Ünite 1
Python'a Giriş ve Geliştirme Ortamı
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).
Kaynak: Anadolu Üniversitesi Açıköğretim Fakültesi, «Python ile Programlama» ders kitabı, Ünite 1. Bu not kitabın yerine geçmez; konuyu kendi cümlelerimle, yapay zekâ desteğiyle özetledim.