Python’a Giriş ve Çalışma Ortamı

Kurulum, sanal ortam, ilk program; değişkenler ve tipler

Bölüm 1

NotBu bölümde
  • Neden Python; nerelerde kullanılır
  • Kurulum, geliştirme ortamı ve uv ile 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, fastapi vb.
  • 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
  • pip gü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 python ile 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 run ve uvx ile 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 pandas

Kurulum, ç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

  • virtualenv
    • virtualenv venv
    • source venv/bin/activate
  • conda
    • conda create -n ip python=3.12
    • conda 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 (isim ile Isim farklı 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 x yerine age.
  • 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ı:

  1. 4 ** 2 = 16
  2. 2 * 8 = 16
  3. 3 + 16 = 19
  4. 19 + 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 * r

Faydalar: 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.txt veya pyproject.toml ile 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.

  1. "10" + "5" → "105": iki string yan yana eklenir, aritmetik toplama yapılmaz.
  2. 10 // 3 → 3: taban bölme; 3.33 → 3.
  3. type("int(30)") → <class 'str'>: sağ taraf bir string literalidir, sayıyı temsil eden yazıdır.
  4. Sonuç: 30: 5**2 = 25, 5*4 = 20, 20//7 = 2, 3+2+25 = 30.
  5. True: öncelik not > and > or; not False → True, True and False → False, True or False → True.
  6. __sayi1 geç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() str döndürür, önce int(yas) gerekir
  • C. ValueError
  • D. Metnin sonuna 1 eklenir
  • E. input() sayı için int dö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, .py dosyası, tarayıcıdaki canlı hücre.
  • input() her zaman str; sayı gerekiyorsa int()/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 .py dosyası ç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.
Başa dön