Python’a Giriş ve Çalışma Ortamı
Kurulum, sanal ortam, ilk program; değişkenler ve tipler
Bölüm 1
- Neden Python; nerelerde kullanılır
- Kurulum, geliştirme ortamı ve
uvile sanal ortam - Kodu çalıştırma: etkileşimli kabuk, dosya, tarayıcıdaki canlı hücre
- Değişkenler, veri tipleri, adlandırma kuralları, operatörler ve öncelik
- Kodun çalışma süreci: tokenizasyon, AST, yürütme
input()ve tür dönüşümü; yorumlar ve docstring
Neden Python?
Python’u Tercih Edilir Kılan Özellikler
- Okunabilirlik: İngilizceye benzer sözdizimi, düşük giriş bariyeri.
- Çok yönlülük: Web, veri bilimi, ML, komut satırı, oyun, masaüstü.
- Zengin ekosistem:
numpy,pandas,matplotlib,django,fastapivb. - Topluluk ve kaynak bolluğu
- Özgür/Açık kaynak
1991’den beri gelişiyor; güncel üretimde Python 3 ailesi kullanılır.
Python Nerelerde Kullanılır?
- Web Geliştirme (Django, Flask, FastAPI)
- Veri Bilimi & Makine Öğrenmesi (NumPy, Pandas, scikit-learn, PyTorch)
- Otomasyon & Betikler
- Oyun ve Masaüstü Uygulamaları
- Eğitim & Araştırma
Kurulum ve Ortam
Bu derste çoğunlukla kendi bilgisayarınıza kurduğunuz Python’ı kullanacağız; sayfadaki canlı hücreler kısa denemeler içindir.
Kurulum (Özet)
- Windows: python.org → İndir & PATH’i ekle
- macOS: Çoğu sistemde mevcut; Homebrew ile:
brew install python - Linux: Dağıtıma göre:
sudo apt install python3 python3-pip
Yaygın sorunlar
- PATH değişkeni
pipgüncelleme:python -m pip install --upgrade pip- Sürüm çakışması (2.x vs 3.x) →
python3/pip3
Geliştirme Ortamları
- Önerilen: Visual Studio Code
- Alternatifler: PyCharm, Jupyter Notebook, Sublime Text
Eklentiler (VS Code):
- Python (Microsoft), Pylance
- Jupyter (isteğe bağlı)
Sanal Ortam Nedir, Neden?
Projeye özel Python yorumlayıcısı ve paket seti barındıran, genelde .venv/ klasöründe tutulan bir çalışma alanıdır. Global Python kurulumundan izoledir; böylece her proje kendi bağımlılıklarını taşır.
- Projeler arası paket çakışmalarını önler ve sürümleri bir lockfile ile sabitleyerek kurulumu tekrarlanabilir kılar.
- Farklı makinelerde aynı ortamı kolayca yeniden kurmayı sağlar.
Sanal Ortam: Temeller
- Akış: Oluştur → Etkinleştir → Kullan → Kapat.
- Yorumlayıcı yolu
which pythonile görülür (Windows:where python). .venv/proje kökünde dursun;.gitignore’a eklemeyi unutmayın.
Varsayılan Araç: uv (Astral)
- Rust ile yazıldığı için hızlıdır; ortam, bağımlılık ve komut çalıştırmayı tek araçta birleştirir.
- Lockfile sayesinde deterministik kurulum sağlar;
uv runveuvxile ortamı etkinleştirmeden çalışabilirsiniz.
uv Akışı
Ortam oluşturma ve paket ekleme:
uv venv -p 3.12 # .venv oluştur
uv init # pyproject.toml (opsiyonel)
uv add numpy pandasKurulum, çalıştırma ve tek seferlik araçlar:
uv sync # lock'a göre kurulum
uv run script.py # ortam aktifleştirmeden çalıştır
uvx ruff . # tek seferlik araçlar
uvx black .Alternatifler
virtualenvvirtualenv venvsource venv/bin/activate
condaconda create -n ip python=3.12conda activate ip
Python Temelleri
Python’da Kod Çalıştırma
1) REPL (Read–Eval–Print Loop) / Etkileşimli Kabuk — yazdığınız her satırı Python hemen çalıştırır ve sonucu altına yazar.
ekural@Oguz-MacBook-Pro ~ % python3
Python 3.13.3 (main, Apr 8 2025, 13:54:08) [Clang 17.0.0 (clang-1700.0.13.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Merhaba, Dünya!")
Merhaba, Dünya!2) Dosya olarak — kodu bir .py dosyasına yazıp yorumlayıcıya verirsiniz. Kabukta sonuç kendiliğinden görünür; dosyada yalnızca print() ile yazdırdığınız görünür.
echo 'print("Merhaba Dünya!")' > program.py
python3 program.py
Merhaba Dünya!3) Tarayıcıda canlı hücre — bu sayfadaki kod kutuları Python’ı tarayıcıda çalıştırır. Kodu değiştirip yeniden çalıştırabilirsiniz.
Değişkenler ve Veri Tipleri
Python’da ayrı bir değişken bildirimi yoktur; atama, adı bir değere bağlar. Tür bilgisi değişken adında değil değerde durur. Temel tipler: int, float, str, bool.
Adlandırma Kuralları
Python’da yazım kuralları PEP 8 standartları ile belirlenmiştir.
- Değişken isimleri harf, rakam ve alt çizgi
_karakterlerinden oluşabilir. - Değişken isimleri bir rakamla başlayamaz.
- Değişken isimleri büyük/küçük harf duyarlıdır (
isimileIsimfarklı değişkenlerdir). - Python’da rezerve edilmiş kelimeler (keywords) değişken ismi olarak kullanılamaz (örneğin
if,else,for,while,True,False).
Anahtar Kelimeler
Anahtar kelimelerin listesi keyword.kwlist ile alınabilir; bir adın anahtar kelime olup olmadığını keyword.iskeyword() söyler.
Değişken Adlarında İyi Uygulamalar
- Anlamlı ve açıklayıcı isimler seçin: yaş için
xyerineage. - Kod okunabilirliği ve bakım kolaylığı için tutarlı isimlendirme stili kullanın:
küçük_harf_ve_alt_çizgi.
Operatörler ve Öncelik
- Aritmetik:
+ - * / // % ** - Karşılaştırma:
== != > < >= <= - Mantıksal:
not,and,or - Öncelik:
**→* / % //→+ -→ karşılaştırma →not→and→or
/ her zaman float döndürür; // taban bölme, % kalan, ** üs.
Kodun Çalışma Süreci
Yorumlayıcı bir ifadeyi üç adımda değerlendirir:
- Lexical Analysis (Tokenizasyon): metni anlamlı token’lara ayırır.
- Syntax Analysis (AST): token’lardan Soyut Sözdizimi Ağacı oluşturur; öncelik/bağlayıcılık burada belirlenir.
- Yürütme (Execution): AST’yi dolaşarak ifadenin değerini hesaplar.
Lexical Analysis (Tokenizasyon)
3 + 2 * 8 + 4 ** 2 ifadesinin token’ları:
3, +, 2, *, 8, +, 4, **, 2
Amaç: yorumlayıcının sözcükleri tanıması (sayılar, operatörler, tanımlayıcılar).
Syntax Analysis (AST)
- Token’lar sözdizimi kurallarına göre AST’de hiyerarşik yapıya dönüştürülür.
- Operatör önceliği ve parantezler bu ağaçta temsil edilir.
Yürütme (Evaluation) — Örnek
3 + 2 * 8 + 4 ** 2 adımları:
4 ** 2 = 162 * 8 = 163 + 16 = 1919 + 16 = 35
Girdi, Dönüşüm ve Yorumlar
Tip Dönüşümü ve Girdi
input() kullanıcının yazdığını her zaman str olarak döndürür. Sayısal işlem için açık dönüşüm gerekir.
raw = input("Sayı girin: ") # her zaman str
x = float(raw)
print(x * 1.5)Sayfadaki hücreler klavyeden girdi beklemez; kullanıcının yazacağı değeri bir değişkene sabit olarak veriyoruz:
type() ve isinstance() ile tür denetimi yapılabilir. int("abc") ya da int("3.5") bir ValueError verir: tür doğrudur ama metnin içeriği tamsayı değildir.
Yorumlar ve Docstring
Yorum # ile başlar. Fonksiyonun ilk satırındaki üç tırnaklı metin docstring’dir; fonksiyonu belgeler.
# Tek satır yorum
def area(r):
"""Yarıçapı r olan dairenin alanını döndürür."""
from math import pi
return pi * r * rFaydalar: okunabilirlik, bakım, hata ayıklama, otomatik belgeler.
Genel İyi Uygulamalar
- Anlamlı ve tutarlı isimler kullanın:
küçük_harf_ve_alt_çizgi - Kodunuzu açıklayan yorum ve docstring’ler ekleyin
- Bağımlılıklarınızı
requirements.txtveyapyproject.tomlile kayıt altına alın - Sanal ortamınızı proje köküne (
.venv/) sabitleyin ve.gitignore’a ekleyin
Alıştırmalar
Tahmin Et, Sonra Çalıştır
Her hücre için önce çıktıyı tahmin edin, sonra çalıştırıp tahmininizi kontrol edin.
Değişken Adı Geçerli mi?
__sayi1 geçerli bir değişken adı mıdır? Önce karar verin, sonra hücrede deneyin.
"10" + "5"→"105": iki string yan yana eklenir, aritmetik toplama yapılmaz.10 // 3→3: taban bölme; 3.33 → 3.type("int(30)")→<class 'str'>: sağ taraf bir string literalidir, sayıyı temsil eden yazıdır.Sonuç: 30:5**2 = 25,5*4 = 20,20//7 = 2,3+2+25 = 30.True: önceliknot>and>or;not False → True,True and False → False,True or False → True.__sayi1geçerlidir: alt çizgi ile başlayabilir.
Kendini Sına
Her soruda önce kendi cevabınızı seçin, sonra cevap anahtarındaki gerekçeleri okuyun; yanlış şıklar bu konuda gerçekten yapılan hatalardan seçildi.
Soru 1
deger = 20
deger = "yirmi"
print(type(deger))- A.
<class 'int'> - B. Hata verir
- C.
<class 'object'> - D.
int, str - E.
<class 'str'>
Doğru: E. Tür değişken adında değil değerdedir; ad son bağlandığı değerin türünü taşır. A ilk atamanın türü sabitlediğini sanır. B Python’da yeniden bağlama hata değildir. C/D type() tek bir sınıf döndürür.
Soru 2
x = "10"
y = "5"
print(x + y)- A.
15 - B.
105 - C.
10 5 - D.
TypeError - E.
"10" + "5"
Doğru: B. İki string + ile birleşir. A sayıya kendiliğinden çevrildiğini sanır. C print(x, y) davranışıdır. D "10" + 5 olsaydı doğruydu. E ifadenin hesaplanmadığını sanır.
Soru 3
yas = input("Yaş: ") satırından sonra yas + 1 yazılırsa ne olur?
- A. Kullanıcı sayı yazdıysa toplanır
- B.
TypeError;input()strdöndürür, önceint(yas)gerekir - C.
ValueError - D. Metnin sonuna
1eklenir - E.
input()sayı içinintdöndürür
Doğru: B. input() her zaman str döndürür; str + int tür hatasıdır. A/E otomatik dönüşüm bekler. C int("abc") gibi çevrim denendiğinde çıkar, burada çevrim yok. D yas + "1" olsaydı doğruydu.
Soru 4
print(7 / 2, 7 // 2, 7 % 2, 2 ** 3)- A.
3.5 3 1 8 - B.
3 3 1 8 - C.
3.5 3.5 1 6 - D.
3.5 4 1 8 - E.
3.5 3 0.5 8
Doğru: A. / her zaman float, // aşağı yuvarlar, % kalan, ** üs. B /’ı tamsayı bölmesi sanır. C **’ı çarpma okur. D //’ı yukarı yuvarlar. E %’yi ondalık kalan sanır.
Soru 5
print("Sonuç:", 3 + 5 * 4 // 7 + 5 ** 2)- A.
Sonuç: 30 - B.
Sonuç: 29 - C.
Sonuç: 54 - D.
Sonuç: 27.0 - E.
Sonuç: 33
Doğru: A. Önce 5 ** 2 = 25; 5 * 4 = 20, 20 // 7 = 2; 3 + 2 + 25 = 30. B hesap hatasıdır (20 // 7’yi 1 alır). C soldan sağa işler. D / kullanılmış gibi float üretir. E **’dan önce toplama yapar.
Kod Yazma
Santimetre cinsinden bir uzunluğu metreye çevirip 175 cm = 1.75 m biçiminde yazdıran kodu yazın. Değer bir string olarak geliyor (yerel ortamda input() ile alınacak).
girdi = "175"
cm = int(girdi)
metre = cm / 100
print(f"{cm} cm = {metre:.2f} m")Önce tür dönüşümü (int), sonra hesap, sonra biçimli çıktı. :.2f olmadan 1.75 yine yazılır ama 180 için 1.8 çıkar; biçim belirteci iki basamağı garanti eder.
Özet ve Kazanımlar
Tek Sayfa Özet
- Python yorumlanan, dinamik ama güçlü tipli bir dildir; tür değişken adında değil değerdedir.
- Proje başına sanal ortam; varsayılan araç
uv. - Kod üç yerde çalışır: etkileşimli kabuk,
.pydosyası, tarayıcıdaki canlı hücre. input()her zamanstr; sayı gerekiyorsaint()/float()./float,//taban bölme,%kalan,**üs; öncelik:**>* / // %>+ -.- Yorum
#, fonksiyon/sınıf açıklaması docstring.
Bu Bölümü Bitiren Öğrenci
- Sanal ortam oluşturup etkinleştirir ve içinde bir
.pydosyası çalıştırır. - Bir değerin türünü
type()ile sorgular ve dinamik tiplemeyi açıklar. input()ile alınan metni uygun sayısal türe çevirir.- Aritmetik operatörlerin önceliğini uygulayarak bir ifadenin sonucunu elle hesaplar.
- Kodun tokenizasyon → AST → yürütme adımlarından geçtiğini açıklar.