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:
- Okunur sözdizimi: Süslü parantez yerine girinti, noktalı virgül yerine satır sonu. Kod, kısa İngilizce cümlelere benzer; başkasının kodunu okumak kolaydır.
- Dev kütüphane ekosistemi: Veri analizi için pandas, yapay zekâ için PyTorch, web için Django ve FastAPI, otomasyon için yüzlerce paket. Çoğu iş için hazır bir araç vardır.
- Hemen sonuç: Ayrı bir derleme adımı yoktur. Yaz, çalıştır, sonucu gör, düzelt.
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:
| Alan | Tipik iş | Öne çıkan araçlar |
|---|---|---|
| Veri analizi ve raporlama | Satış verisini temizleyip özet tablo ve grafik üretmek | pandas, matplotlib, Jupyter |
| Otomasyon | Her sabah 20 Excel dosyasını birleştirip e-posta göndermek | standart kütüphane, openpyxl |
| Web ve API | Sipariş sistemine servis yazmak, web sitesi kurmak | Django, FastAPI, Flask |
| Yapay zekâ ve makine öğrenmesi | Müşteri kaybı tahmini, öneri sistemi, dil modelleri | scikit-learn, PyTorch, TensorFlow |
| Veri mühendisliği | Veritabanından veri çekip dönüştürüp başka sisteme aktarmak | SQLAlchemy, Airflow |
| Test ve DevOps | Sunucu betikleri, test otomasyonu, dağıtım | pytest, 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:
- Sipariş verisini kaynağından okur (CSV dosyası, veritabanı ya da API).
- Veriyi temizler: boş şehir adlarını doldurur, "istanbul" ile "İstanbul"u aynı şehir sayar.
- Şehre göre gruplar, sipariş adedini ve toplam tutarı hesaplar.
- Sonucu bir tabloya ve grafiğe döker, yöneticinin anlayacağı dilde özetler.
- 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.
print("Anadolu Market'te indirim var").Print("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.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:
- 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.
- 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.pycdosyaları bu bayt kodudur; bir dahaki sefere derleme adımı atlanır. - 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:
| Özellik | Anlamı | Python'da örnek |
|---|---|---|
| Yorumlanan (interpreted) | Ayrı bir derleme adımı yok, yorumlayıcı çalıştırır | python rapor.py |
| Dinamik tipli (dynamically typed) | Tür değişkene değil değere aittir, çalışırken belirlenir | x = 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 arada | fonksiyon, sınıf, map |
| Çöp toplayıcılı (garbage collected) | Belleği sen boşaltmazsın, Python boşaltır | Kullanılmayan liste kendiliğinden silinir |
| Girintiyle bloklanan | Bloklar süslü parantezle değil girintiyle belirlenir | if 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"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") + 3tam 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ı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.
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.