İçeriğe geç
Masadan notlar

öğrenciPythonPython 3.15programlama dilleri

Python 3.15 çıktı: öğrenciler için önemli yenilikler ve geçiş rehberi

Python 3.15 yayımlandı ve Türkçe karakterle çalışan herkesi ilgilendiren bir varsayılan değişti: UTF-8 artık her yerde varsayılan. Öğrenci gözüyle en önemli yenilikleri, Python 3.10'un destek sonunu ve bu ay yapabileceğin beş somut adımı anlattık.

Can Karaca · 5 dk okuma

Python 3.15, 9 Ekim 2026'da yayımlandı. Python öğreniyorsan, okulda Python'la ödev yapıyorsan ya da küçük bir projeni Python'la yürütüyorsan bu sürümde seni doğrudan ilgilendiren birkaç değişiklik var. Bunlardan biri, Türkçe karakterlerle çalışan herkesin bilmesi gereken bir varsayılan değişikliği.

Ne oldu?

Python'un resmî blogundaki duyuruya göre 3.15, 1.012 katkıcının 5.643 commit'iyle hazırlandı. Resmî "What's New" belgesi değişikliklerin tamamını listeliyor. Öne çıkanlar şunlar:

  • UTF-8 artık varsayılan kodlama (PEP 686)
  • lazy import ile açık tembel içe aktarma (PEP 810)
  • Comprehension içinde açma, yani unpacking (PEP 798)
  • Yeni yerleşik tipler: frozendict (PEP 814) ve sentinel (PEP 661)
  • Standart kütüphanede yeni bir profilleme paketi ve Tachyon adlı örnekleyici profilleyici (PEP 799)
  • Daha yardımcı hata mesajları
  • Deneysel JIT derleyicide iyileştirmeler

Aynı günlerde önemli bir tarih daha geçti. Python geliştirici rehberindeki sürüm tablosuna göre Python 3.10'un ömrü 1 Ekim 2026'da doldu; 3.10 artık güvenlik güncellemesi de almıyor.

Öğrenci gözüyle en önemli değişiklikler

UTF-8 varsayılan: Türkçe karakterler için iyi haber, eski dosyalar için dikkat

Şimdiye kadar open() fonksiyonunu encoding vermeden çağırdığında Python işletim sisteminin yerel kodlamasını kullanıyordu. Linux ve macOS'ta bu çoğunlukla zaten UTF-8'di. Türkçe Windows'ta ise genellikle cp1254'tü. Sonuç olarak aynı kod bir bilgisayarda çalışıp diğerinde "ş" ya da "ğ" yüzünden UnicodeDecodeError verebiliyordu.

3.15 ile birlikte encoding belirtilmediğinde her yerde UTF-8 kullanılıyor. Yeni yazdığın kod için bu iyi haber. Ama eskiden Windows'ta kaydedilmiş bir CSV ya da metin dosyasını okuyorsan ve dosya UTF-8 değilse artık hata alabilirsin. Çözüm, kodlamayı açıkça yazmak:

python
# Dosyanın kodlamasını biliyorsan açıkça yaz
with open("notlar.csv", encoding="cp1254") as f:
    veri = f.read()

# Sistemin yerel kodlamasını bilerek istiyorsan
with open("notlar.csv", encoding="locale") as f:
    veri = f.read()

Geçici olarak eski davranışa dönmen gerekirse PYTHONUTF8=0 ortam değişkenini ya da -X utf8=0 seçeneğini kullanabilirsin. Yine de en sağlam alışkanlık, her open() çağrısına encoding yazmak.

lazy import: başlangıç süresini kısaltmak

Yeni lazy (yumuşak) anahtar kelimesiyle Python'a bir modülü gerçekten kullanılana kadar yüklememesini söyleyebiliyorsun:

python
lazy import json
lazy from pathlib import Path

print("Başlıyor...")           # json ve pathlib henüz yüklenmedi
veri = json.loads('{"a": 1}')  # json burada yükleniyor

Bu özellikle komut satırı araçlarında işe yarıyor. --help yazan kullanıcı, hiç kullanılmayacak ağır kütüphanelerin yüklenmesini beklemek zorunda kalmıyor. Bir kısıtı var: lazy yalnızca modülün en üst seviyesinde kullanılabiliyor. Fonksiyonun içinde ya da bir try bloğunda kullanırsan SyntaxError alırsın.

Comprehension içinde açma ve frozendict

İç içe listeleri düzleştirmenin artık daha okunur bir yolu var:

python
listeler = [[1, 2], [3, 4], [5]]
duz = [*L for L in listeler]   # [1, 2, 3, 4, 5]

frozendict ise değiştirilemeyen bir sözlük. Anahtarları ve değerleri hash'lenebilir olduğu sürece kendisi de hash'lenebiliyor; yani bir sözlüğün anahtarı ya da bir kümenin elemanı olabiliyor. Ayarlar gibi "bir kez oluştur, sonra dokunma" türünden veriler için iyi bir seçenek.

Aynı gruptaki diğer yenilik sentinel. Bir fonksiyonda "bu parametre hiç verilmedi" durumunu None'dan ayırmak için çoğumuz object() gibi geçici çözümler kullanırdık. Yeni yerleşik tip, bu iş için okunaklı bir gösterimi olan, kopyalandığında kimliğini koruyan benzersiz değerler oluşturuyor. Kütüphane yazmaya başladığında işine yarayacak bir ayrıntı.

Hata mesajları: başka dilden gelenlere küçük bir jest

Başka bir dilden kalma alışkanlıkla yanlış metot çağırdığında Python artık doğrusunu öneriyor. Örneğin bir listede push çağırırsan append'i, bir string'de toUpperCase çağırırsan upper'ı hatırlatıyor. Küçük bir şey gibi görünse de Python'u JavaScript'ten sonra öğrenenlere epey zaman kazandırabilir.

Yeni profilleyici: kodun nerede yavaşladığını görmek

Yeni profiling.sampling modülü (Tachyon), çalışan programın vaktini nerede harcadığını düşük ek yükle örnekliyor ve doğrudan alev grafiği (flame graph) üretebiliyor:

bash
python -m profiling.sampling run --flamegraph -o profil.html script.py

Bitirme projende "bu neden bu kadar yavaş?" sorusunu tahminle değil, veriyle cevaplamak için iyi bir araç.

Performans ve macOS notu

Duyuruya göre deneysel JIT derleyici, x86-64 Linux'ta standart yorumlayıcıya göre ortalamada yüzde 7–8 civarı hızlanma sağlıyor. Mucize bekleme ama yön doğru. Bir de macOS için resmî yükleyici artık GIL'siz çalışan free-threaded yapıyı da varsayılan olarak kuruyor; paralel programlamayı merak ediyorsan denemek için bahanen hazır. macOS kullanıyorsan bir uyarı daha var: aynı duyuruya göre macOS 27.0'da IDLE ve tkinter tabanlı arayüzler diyalog açarken donabiliyor. Geçici bir çözüm çıkana kadar o macOS güncellemesini ertelemen öneriliyor.

Hemen yükseltmeli misin?

Kısa cevap: öğrenmek ve denemek için evet, teslim edeceğin bir proje için acele etme.

  • Bir ders için kullanıyorsan hocanın ya da dersin belirlediği sürümde kal. Ödevin otomatik değerlendiriliyorsa sürüm farkı can sıkabilir.
  • Kendi projen varsa önce bağımlılıklarının 3.15'i desteklediğinden emin ol. Büyük kütüphanelerin yeni sürüme uygun paketleri her zaman ilk gün hazır olmayabilir. Kurulumda hata alırsan ilk bakacağın yer burası olsun.
  • Hâlâ 3.10 ya da daha eskisini kullanıyorsan asıl öncelik bu. 3.11'den 3.14'e kadar olan sürümler desteklenmeye devam ediyor. PEP 790'a göre 3.15 yaklaşık iki yıl düzenli hata düzeltmesi, ardından Ekim 2031'e kadar güvenlik güncellemesi alacak.

Bu ay ne yapabilirsin?

  1. 3.15'i mevcut sürümünün yanına kur. Resmî yükleyiciyi ya da kullandığın sürüm yöneticisini kullan, sistemindeki sürümü silme. Projeni python3.15 -m venv .venv-315 gibi ayrı bir sanal ortamda dene.
  2. Kodunu UTF-8 değişikliğine karşı tara. Projende encoding verilmemiş open( çağrılarını ara ve her birine kodlamayı açıkça ekle. 3.15'e geçmesen bile bu iyi bir alışkanlık.
  3. Testlerini 3.15'te çalıştır. Testin yoksa bu iyi bir bahane: en kritik iki fonksiyonun için birer test yaz.
  4. Bir özelliği gerçekten dene. Bir komut satırı aracında ağır bir içe aktarmayı lazy yap ve farkı python -X importtime ile ölç. Sonucu README'ne not et; küçük ama somut bir öğrenme kaydı olur.
  5. Python'u veri için öğreniyorsan YÖK'ün ücretsiz Dijital Üniversite Platformu'na göz at. DHA'nın 8 Ekim tarihli haberine göre platformda yapay zekâ, veri analizi ve sürdürülebilirlik okullarında toplam 16 modül var. Başvurular 14–20 Ekim'de alınacak, eğitimler 3 Kasım'da başlayacak. Başvuru koşulları YÖK ve Marmara Üniversitesi Nüfus ve Sosyal Araştırmalar Enstitüsü'nün hesaplarından duyurulacak.

Yeni sürümü tek başına değil, başkalarıyla konuşarak kurcalamayı seviyorsan: re:make her pazar 15.00'te Buca'da buluşuyor, laptopunu al gel. Yeri ve saati burada.

XLinkedIn

Bir sonraki not düştüğünde haberin olsun.

Yeni yazılar ve masadan notlar. Ayda birkaç mail, istediğin an çık.

Masada konuşulanlar 0

Yorum yaz

Masadan başka notlar

Okumaya devam.

  1. 11 Ekim 2026

    TÜBİTAK 2209-A 2026 açıldı: yazılım projesiyle nasıl başvurulur?

    TÜBİTAK'ın lisans ve ön lisans öğrencilerine yönelik 2209-A ve 2209-B çağrıları 11 Kasım 2026'ya kadar açık. Yazılım fikrini hakemin görmek istediği araştırma projesine nasıl çevireceğini ve önümüzdeki dört haftayı nasıl planlayacağını anlattık.

    TÜBİTAK · 2209-A · öğrenci · araştırma projesi · kariyer

    Can Karaca · 5 dk okuma