Ana içeriğe geç
Kesit Python
Temel · Başlangıç

Python nedir, nerede kullanılır?

Python'ın ne olduğunu, iş dünyasında nerelerde kullanıldığını öğrenir ve ilk print komutlarını çalıştırırsın.

Uygulamada aç, 19 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

Önce deneOkumadan önce bir kez çalıştır; gerisi sonra gelir.
print("Merhaba, Python!")

Python nedir?

Python, 1991'de Guido van Rossum'un yayımladığı, okunabilirliği her şeyin önüne koyan genel amaçlı bir programlama dili (programming language). Adını yılandan değil, Monty Python komedi grubundan alır. Bugün kullanılan sürüm ailesi Python 3; bu uygulamada Python 3.12 ile çalışacaksın. Yazdığın kod, tarayıcının içinde gerçek bir Python yorumlayıcısında (interpreter) koşar. Temel dil birebir aynıdır: burada öğrendiğin dil kuralları bilgisayarına kuracağın Python'da da aynı çalışır.

Python'ı bu kadar sevdiren üç özellik var:

Nerede kullanılır?

Python'ı tek bir alana sıkıştırmak zor. Aşağıdaki tablo, iş dünyasında en sık karşılaşacağın kullanım alanlarını özetliyor:

AlanTipik işÖne çıkan araçlar
Veri analizi ve raporlamaSatış verisini temizleyip özet tablo ve grafik üretmekpandas, matplotlib, Jupyter
OtomasyonHer sabah 20 Excel dosyasını birleştirip e-posta göndermekstandart kütüphane, openpyxl
Web ve APISipariş sistemine servis yazmak, web sitesi kurmakDjango, FastAPI, Flask
Yapay zekâ ve makine öğrenmesiMüşteri kaybı tahmini, öneri sistemi, dil modelleriscikit-learn, PyTorch, TensorFlow
Veri mühendisliğiVeritabanından veri çekip dönüştürüp başka sisteme aktarmakSQLAlchemy, Airflow
Test ve DevOpsSunucu betikleri, test otomasyonu, dağıtımpytest, Ansible

Bu listedeki alanların ortak noktası şu: hepsinde Python, "işi bir kere yaz, her gün otomatik koşsun" mantığıyla kullanılır. Bir analist için bu, Excel'de elle yaptığı her tekrarlı işi birkaç satır koda dönüştürmek demektir.

Anadolu Market'te bir analist Python'la ne yapar?

Diyelim ki Anadolu Market'in e-ticaret ekibinde veri analistisin. Pazartesi sabahı gelen kutunda şu istek var: "Geçen haftanın şehir bazlı satış özetini çıkarır mısın?" Python bilen bir analist şu akışı izler:

  1. Sipariş verisini kaynağından okur (CSV dosyası, veritabanı ya da API).
  2. Veriyi temizler: boş şehir adlarını doldurur, "istanbul" ile "İstanbul"u aynı şehir sayar.
  3. Şehre göre gruplar, sipariş adedini ve toplam tutarı hesaplar.
  4. Sonucu bir tabloya ve grafiğe döker, yöneticinin anlayacağı dilde özetler.
  5. Betiği zamanlayıcıya bağlar; artık her pazartesi rapor kendiliğinden gelir.

Bu kursun sonunda bu akışın tamamını tek başına yazabileceksin. Ama her yolculuk küçük bir adımla başlar: ekrana bir şey yazdırmak.

İlk print örnekleri

print, Python'ın ekrana yazdırma fonksiyonudur (function). Parantez içine ne verirsen onu gösterir. Aşağıdaki kutuda Çalıştır'a bas:

print("Merhaba, Anadolu Market!")
print("Bugün 3 yeni sipariş geldi.")

Tırnak içine yazdığın şeye metin (string) denir. Birden fazla değeri virgülle ayırarak aynı satıra yazdırabilirsin; Python aralarına otomatik boşluk koyar:

print("Sipariş adedi:", 3)
print("Toplam tutar:", 3 * 250)
print("Ilgaz", "Bank", sep=" - ")

Üçüncü satırdaki sep, değerler arasına ne konulacağını belirler. Şimdi en önemli ayrımı gör: tırnak içindeki her şey metindir, tırnak dışındaki sayılarla hesap yapılır.

print(3 * 250)
print("3 * 250")
print(5 + 3)
print("5" + "3")

İlk satırda çarpma gerçekten yapılır ve 750 çıkar. İkinci satır ise sadece bir metindir; Python onu olduğu gibi basar. Son iki satır da aynı mantığın devamı: sayılar toplanır, metinler ise uç uca eklenir.

Tırnak seçimiÇift tırnak ("...") ve tek tırnak ('...') Python'da aynı işi görür. Metnin içinde kesme işareti varsa çift tırnak kullanmak rahat eder: print("Anadolu Market'te indirim var").
Büyük-küçük harf önemliPrint("x") yazarsan Python "NameError: name 'Print' is not defined" der. Python'da print ile Print farklı iki addır. Her zaman küçük harfle yaz.
Python 2 ile karıştırmaİnternette print "Merhaba" gibi parantezsiz örnekler görebilirsin. Bu, 2020'de desteği biten Python 2 yazımıdır. Sen her zaman parantez kullan.

Python ile ilk hesaplar

print yalnızca metin basmaz; parantez içindeki her ifadeyi hesaplayıp sonucu gösterir. Anadolu Market'in bir günlük küçük özetini sadece print ile çıkarabilirsin. Değişken kavramını henüz görmedin, bu yüzden değerleri doğrudan yazıyoruz; birkaç ders sonra aynı hesabı adlandırılmış değerlerle, çok daha okunur biçimde yapacaksın.

print("Sabah siparişi:", 12)
print("Öğleden sonra:", 19)
print("Günlük toplam:", 12 + 19)
print("Ortalama sepet (TL):", (1499 + 250 + 89) / 3)
print("Kalan stok:", 250 - 31)

Dördüncü satırdaki bölme işlemi ondalıklı sonuç verir; bunun neden hep böyle olduğunu Sayılar dersinde öğreneceksin. Şimdilik şunu gör: Python bir hesap makinesi gibi parantez önceliğine uyar ve sonucu hemen basar.

Yorumlanan dil ne demek?

Python yorumlanan (interpreted) bir dildir: kodunu önce makine diline çeviren ayrı bir program çalıştırmazsın; yorumlayıcı satırları sırayla okur ve uygular. Bunun iki sonucu var. Birincisi, deneme yapmak hızlıdır: bir satır yazar, hemen sonucu görürsün. İkincisi, çoğu hata (yazım hatası hariç) ancak o satıra sıra geldiğinde ortaya çıkar; Python önce dosyanın tamamını okur, sözdizimi hatası varsa hiçbir satırı çalıştırmaz. Dolayısıyla kodu küçük parçalar hâlinde sık sık çalıştırmak iyi bir alışkanlıktır. Şimdilik her şey tarayıcıda çalışıyor; hazır olduğunda "Bilgisayarına geç" bölümünde Python'ı kendi bilgisayarına kurar, bu yorumlayıcıyı terminalden çalıştırırsın.

Derinleş: Python kodu nasıl çalıştırır? (isteğe bağlı)

Python bir programı nasıl çalıştırır?

"Yorumlanan dil" ifadesi doğru ama eksik. Sen python rapor.py yazdığında perde arkasında üç adım olur:

  1. Ayrıştırma (parsing): Yorumlayıcı dosyanın tamamını okur ve sözdizimini denetler. Kapanmamış bir parantez varsa program hiç başlamaz; SyntaxError bu yüzden ilk satır bile çalışmadan gelir.
  2. Bayt koduna derleme (bytecode): Kod, Python sanal makinesinin anlayacağı ara bir dile çevrilir. Bir modülü içe aktardığında oluşan __pycache__ klasöründeki .pyc dosyaları bu bayt kodudur; bir dahaki sefere derleme adımı atlanır.
  3. Yürütme: Python sanal makinesi (PVM) bayt kodunu satır satır çalıştırır. NameError, TypeError gibi hatalar bu aşamada, o satıra sıra geldiğinde çıkar.

Bayt kodunu merak ediyorsan standart kütüphanedeki dis modülü onu gösterir. Çıktının ayrıntısı sürümden sürüme değişir; amaç ezberlemek değil, "kod önce çevriliyor, sonra çalışıyor" fikrini görmek:

import dis
dis.dis("toplam = 3 * 250")
print("Bayt kodu yukarıda; sonuç hesaplanınca:", 3 * 250)

İlk satırda bir şey dikkatini çekebilir: Python 3 * 250 çarpımını derleme sırasında önceden yapıp 750 sabitini koyabilir. Buna sabit katlama (constant folding) denir ve yorumlayıcının küçük bir hız optimizasyonudur.

Python'ın kimlik kartı

İş görüşmelerinde ve PCEP gibi sertifika sınavlarında Python'ı birkaç teknik sıfatla tarif etmen beklenir. Hepsinin ne anlama geldiğini bir tabloda topladık:

ÖzellikAnlamıPython'da örnek
Yorumlanan (interpreted)Ayrı bir derleme adımı yok, yorumlayıcı çalıştırırpython rapor.py
Dinamik tipli (dynamically typed)Tür değişkene değil değere aittir, çalışırken belirlenirx = 5 sonra x = "beş"
Güçlü tipli (strongly typed)Uyumsuz türleri sessizce birbirine çevirmez"5" + 3 TypeError verir
Çok paradigmalıYordamsal, nesne yönelimli ve fonksiyonel stil bir aradafonksiyon, sınıf, map
Çöp toplayıcılı (garbage collected)Belleği sen boşaltmazsın, Python boşaltırKullanılmayan liste kendiliğinden silinir
Girintiyle bloklananBloklar süslü parantezle değil girintiyle belirlenirif altındaki 4 boşluk

En çok karıştırılan ikili "dinamik" ve "güçlü" tiplemedir. Dinamik, bir değişkenin türünü önceden söylemediğin anlamına gelir. Güçlü ise Python'ın türleri tahmin edip senin yerine dönüştürmediği anlamına gelir. JavaScript'te "5" + 3 sonucu "53" olur; Python ise hata verir ve seni açık olmaya zorlar:

print("5" + "3")        # metin + metin: birleştirme
print(5 + 3)            # sayı + sayı: toplama
print(int("5") + 3)     # açıkça çevirirsen çalışır
print("5" * 3)          # metni tekrar etmek serbest
Güçlü tipli ama her şeye izin vermez değil"5" * 3 hata vermez, "555" üretir; çünkü metni tekrar etmek tanımlı bir işlemdir. Python'ın reddettiği şey, anlamı belirsiz işlemlerdir: metne sayı eklemek gibi.

Python'ın felsefesi: The Zen of Python

Python'ın tasarım ilkeleri, Tim Peters'ın yazdığı 19 maddelik bir metinde toplanır ve dilin içine gömülüdür. Aşağıdaki kutuyu çalıştır:

import this

Bu maddeler kod incelemelerinde (code review) gerçekten alıntılanır. Özellikle şu üçünü aklında tut:

  • Beautiful is better than ugly / Readability counts: Kod bir kere yazılır, yüzlerce kez okunur. Okunurluk hızdan önce gelir.
  • Explicit is better than implicit: Ne yaptığını açıkça yaz. int("5") + 3 tam olarak bu ilkenin sonucudur.
  • Errors should never pass silently: Hata görmezden gelinmez; Python bu yüzden şüpheli bir işlemde durup sana söyler.

Bu ilkelerin somut kurallara dönüşmüş hâli PEP 8 stil rehberidir. PEP (Python Enhancement Proposal), dile yapılacak her değişikliğin yazılı önerisidir; f-string'ler PEP 498, match ifadesi PEP 634 ile geldi. Bir özelliğin neden öyle tasarlandığını merak ettiğinde ilgili PEP'i okumak en güvenilir kaynaktır.

Anahtar sözcükler ve hazır fonksiyonlar

Python'ın kendine ayırdığı birkaç düzine sözcük vardır: if, for, def, class, True, None gibi. Bunlara anahtar sözcük (keyword) denir ve değişken adı olarak kullanılamaz. print, len, sum ise anahtar sözcük değil hazır fonksiyondur (built-in function); teknik olarak üzerine yazabilirsin ama yazmamalısın.

import keyword
print(keyword.iskeyword("for"))      # True: ayrılmış sözcük
print(keyword.iskeyword("print"))    # False: hazır fonksiyon
print(keyword.iskeyword("siparis"))  # False: serbest ad
print(keyword.kwlist[:6])            # listenin ilk birkaç elemanı
Her şey bir nesnedirPython'da sayılar, metinler, hatta print fonksiyonunun kendisi bile nesnedir (object). print(type(print)) yazarsan <class 'builtin_function_or_method'> görürsün. Bu fikir, ileride fonksiyonları başka fonksiyonlara parametre olarak verirken çok işine yarayacak.

Ekosistem: PyPI ve "piller dahil"

Python'ın sloganlarından biri "batteries included": standart kütüphane (standard library) kurulumla birlikte gelir ve tarih hesabından JSON okumaya, e-posta göndermekten SQLite veritabanına kadar yüzlerce modül içerir. Standart kütüphanede olmayan her şey için PyPI (Python Package Index) adlı resmî paket deposu vardır; pandas, requests, Django gibi paketler oradan pip ile kurulur. Kurulum dersinde pip'in ilk adımlarını göreceksin.

Python'ın birden fazla uygulaması (implementation) da vardır. python.org'dan indirdiğin ve bu uygulamada tarayıcıda çalışan sürüm C ile yazılmış CPython'dır; "Python" denince neredeyse her zaman o kastedilir. PyPy gibi alternatifler belirli işlerde daha hızlıdır. Ayrıntısını Kurulum ve araçlar dersinde göreceksin.

Gerçek işteYeni bir ekibe katıldığında ilk hafta şu soruları sor: Hangi Python sürümünü kullanıyoruz? Paketler hangi dosyada listeleniyor (requirements.txt, pyproject.toml)? Kod stili otomatik denetleniyor mu (Ruff, Black)? Bu üç cevap, "benim makinemde çalışıyordu" türü sorunların çoğunu daha başlamadan önler. Kod incelemesinde "bu satır okunmuyor" eleştirisi aldığında kişisel algılama; Zen'in "Readability counts" maddesi ekibin ortak dilidir.
Uzmanlaş

Excel'den Python'a geçiş neden kârlı?

Çoğu analist Python'a Excel'in sınırına çarpınca gelir: dosya yüz binlerce satıra ulaşınca yavaşlar, aynı raporu her hafta elle yenilemek hata üretir, iki kaynağı birleştirmek saatler alır. Python'da aynı iş bir betiktir: veriyi okur, dönüştürür, raporu yazar. Betik bir kez doğru çalışıyorsa her hafta aynı kalitede çalışır. Excel'in yerini almaz; Excel'in yapamadığı tekrarlı ve büyük işleri üstlenir.

Python her şeyin çözümü değil

Dürüst olmak gerekirse Python'ın zayıf olduğu yerler de var. Mobil uygulama arayüzleri için Swift ve Kotlin, tarayıcıda çalışan arayüzler için JavaScript, çok yüksek performans gerektiren oyun motoru ya da işletim sistemi çekirdeği için C, C++ ve Rust tercih edilir. Python'ın gücü, bu dillerle yazılmış hızlı kütüphaneleri kolayca kullanabilmesinde yatar: pandas ve numpy'nin altında C kodu çalışır, sen ise Python'ın rahatlığıyla yazarsın.

İş ilanlarında ne beklenir?

Veri analisti ilanlarında genellikle "Python (pandas), SQL ve bir görselleştirme aracı" üçlüsü geçer. Otomasyon ve yazılım rollerinde buna standart kütüphane, test yazma ve Git eklenir. Bu kursun Temel seviyesi dilin kendisini, Orta seviyesi Pythonic kod ve standart kütüphaneyi, İleri seviyesi ise pandas, eşzamanlılık (concurrency) ve dağıtımı kapsıyor; yani ilanlardaki beklentiyle aynı sırayı izliyorsun.

Alıştırmalara geç (19)