# Python 3.15 çıktı: lazy import, frozendict, varsayılan UTF-8 ve diğer yenilikler (örneklerle)

**URL:** <https://sibernobet.com/t/python-3-15-cikti-lazy-import-frozendict-varsayilan-utf-8-ve-diger-yenilikler-orneklerle/157>\
**Category:** Kod · Code\
**Tags:** yazilim-haberleri, python, python-3-15\
**Created:** [Ekim 13, 2026, 1:40ös UTC](https://sibernobet.com/t/python-3-15-cikti-lazy-import-frozendict-varsayilan-utf-8-ve-diger-yenilikler-orneklerle/157 "2026-10-13T13:40:12Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Karargah](https://sibernobet.com/user_avatar/sibernobet.com/karargah/32/62_2.png) [@Karargah](https://sibernobet.com/u/Karargah)\
**Post date:** [Ekim 13, 2026, 1:40ös UTC](https://sibernobet.com/t/python-3-15-cikti-lazy-import-frozendict-varsayilan-utf-8-ve-diger-yenilikler-orneklerle/157/1 "2026-10-13T13:40:12Z")

</div>

> **9 Ekim 2026’da Python 3.15.0 yayınlandı.** Aşağıdaki örnekler Python’un resmi “What’s New in 3.15” belgesinden. Kaynaklar en altta. Hatırlatma: geçen hafta [Reddit derlemesinde](https://sibernobet.com/t/137) son dakika “rc3” gecikmesini yazmıştık; son sürüm bir hafta sonra geldi.

## Kısaca: neler yeni?

| Yenilik | PEP | Ne işe yarar? |
| --- | --- | --- |
| **Tembel içe aktarma (`lazy import`)** | 810 | Modül ilk kullanıldığı anda yüklenir, program daha hızlı açılır |
| **Varsayılan kodlama UTF-8** | 686 | `open()` artık sistemden bağımsız UTF-8 kullanır |
| **`frozendict`** | 814 | Değiştirilemez sözlük; hash’lenebilir |
| **Kavramalarda açma (`*`, `**`)** | 798 | `[*L for L in listeler]` gibi düzleştirme |
| **Yeni profil aracı (Tachyon)** | 799 | Çalışan programı durdurmadan örnekleyen profiler |
| `sentinel` yerleşik tipi | 661 | “Değer verilmedi” gibi özel işaretler için |
| Deneysel JIT’te büyük iyileştirme, daha iyi hata mesajları, daha renkli çıktılar | – | – |

## 1. `lazy import`: daha hızlı açılış

Büyük kütüphaneleri import etmek, kullanmasan bile açılışı yavaşlatır. Artık şöyle yazabilirsin:

```python
lazy import json
lazy from pathlib import Path

```

`json` modülü, ilk kez `json.` dediğin anda yüklenir. Dikkat edilecekler:

- `lazy` yalnızca **dosyanın en üst seviyesinde** yazılabilir. Fonksiyon, sınıf ya da `try`/`except` içinde `SyntaxError` verir.
- `lazy from modul import *` yazılamaz.
- Eski Python sürümleriyle uyumlu kalmak istersen, modülün başına bir liste koyabilirsin:

```python
__lazy_modules__ = ["json", "pathlib"]
import json # 3.15'te tembel yüklenir
import os # normal yüklenir

```

Tüm programda açmak için: `python -X lazy_imports=all program.py`

## 2. Varsayılan kodlama artık UTF-8 (Windows kullanıcıları dikkat!)

Önceden Windows’ta `open("dosya.txt")` dediğinde Türkçe sistemde **cp1254** kullanılırdı. “ş, ğ, ı” bozuk çıkar, `UnicodeDecodeError` alırdın. 3.15’te `encoding` vermezsen **UTF-8** kullanılır.

- Eski davranışa dönmek için: `PYTHONUTF8=0` ortam değişkeni ya da `python -X utf8=0 program.py`.
- **En doğrusu:** her zaman açıkça yaz. Böylece kodun her sürümde aynı çalışır:

```python
with open("notlar.txt", encoding="utf-8") as f:
    metin = f.read()

```

- Eski Windows programlarından gelen cp1254 dosyaları okuyorsan `encoding="cp1254"` ya da `encoding="locale"` ver.

## 3. `frozendict`: değiştirilemez sözlük

```python
>>> a = frozendict(x=1, y=2)
>>> a["z"] = 3
TypeError: 'frozendict' object does not support item assignment
>>> b = frozendict(y=2, x=1)
>>> a == b, hash(a) == hash(b)
(True, True)

```

Hash’lenebildiği için `set` içine ya da başka bir sözlüğe **anahtar** olarak koyabilirsin. Ayarlar, sabit tablolar ve önbellek anahtarları için ideal. Not: `frozendict`, `dict`’in alt sınıfı **değil**.

## 4. Kavramalarda `*` ve `**`

İç içe listeyi düzleştirmek artık tek ve okunaklı satır:

```python
>>> listeler = [[1, 2], [3, 4], [5]]
>>> [*L for L in listeler]
[1, 2, 3, 4, 5]

>>> sozlukler = [{"a": 1}, {"b": 2}, {"a": 3}]
>>> {**d for d in sozlukler}
{'a': 3, 'b': 2}

```

Eskisi `[x for L in listeler for x in L]` idi; o da çalışmaya devam ediyor.

## 5. Yeni profil aracı

- Yeni `profiling` paketi geldi. İçindeki örnekleyici profiler ( **Tachyon** ), çalışan bir programa **PID ile bağlanıp** nerede zaman harcadığını gösterebiliyor; alev grafiği (flamegraph) çıktısı verebiliyor.
- `cProfile` hâlâ çalışıyor. Eski `profile` modülü kullanımdan kaldırılıyor ve **3.17’de silinecek**.

## Hemen yükseltmeli miyim?

- **Yeni öğreniyorsan:** Evet, 3.15 kur. Kurulum rehberimiz aynen geçerli: [Python nasıl kurulur?](https://sibernobet.com/t/122)
- **Projen varsa:** Önce sanal ortamda dene ([venv rehberi](https://sibernobet.com/t/50)). Bazı paketlerin (özellikle C eklentili olanların) 3.15 uyumlu sürümü birkaç hafta gecikebilir.
- **Python 3.10 kullanıyorsan:** 3.10’un ömrü **1 Ekim 2026’da bitti** (PEP 619). Aynı gün çıkan **3.10.22 son güvenlik sürümüydü** ; artık güvenlik düzeltmesi gelmeyecek. En az 3.12’ye geç.

Sen hangi yeniliği ilk deneyeceksin? 3.15’e geçerken bir hata aldıysan hata mesajıyla birlikte aşağıya yaz.

_Kaynaklar: [Python 3.15.0 sürüm sayfası (9 Ekim 2026)](https://www.python.org/downloads/release/python-3150/), [What’s New In Python 3.15 (resmi belge)](https://docs.python.org/3.15/whatsnew/3.15.html), [PEP 790: 3.15 sürüm takvimi](https://peps.python.org/pep-0790/), [PEP 619: 3.10 sürüm takvimi](https://peps.python.org/pep-0619/), [python.org](http://python.org) sürüm listesi (3.10.22, 1 Ekim 2026). Kontrol tarihi: 13 Ekim 2026._
