FastAPI, Flask ve Django arasındaki temel fark, her birinin Python web geliştirmeye yaklaşım felsefesinde gizlidir: Django kapsamlı ve "her şey dahil" bir yapı sunar, Flask minimalist bir çekirdekle geliştiriciye tam özgürlük tanır, FastAPI ise tip belirteçleri ve eşzamansız (async) mimariyle modern API geliştirmeyi merkeze alır. Hangisinin "daha iyi" olduğuna dair kesin bir cevap yoktur; doğru seçim projenin ölçeğine, ekibin deneyimine ve hedeflenen kullanım senaryosuna göre değişir. Bu üç framework de aynı dilin, yani Python'un üzerine inşa edilmiştir ve aralarındaki farklar dilin kendisinden değil, her birinin tasarım tercihlerinden kaynaklanır.
FastAPI Nedir? Modern Python Web Framework'üne Hızlı Bir Bakış
FastAPI, Python'ın tip belirteçleri (type hints) özelliğini merkezine alarak veri doğrulama, serileştirme ve dokümantasyon süreçlerini otomatikleştiren, göreli olarak yeni nesil bir web framework'üdür. Bir fonksiyon parametresine tip belirttiğinizde, FastAPI bu bilgiyi hem gelen isteklerin doğrulanması hem de dış dünyaya sunulan dokümantasyon için kullanır. Bu sayede geliştirici, veri doğrulama kodunu elle yazmak yerine dilin kendi söz dizimini kullanarak aynı işi yaptırabilir.
Framework'ün öne çıkan bir diğer özelliği, async-first tasarımıdır; yani eşzamansız çalışmayı sonradan eklenen bir özellik olarak değil, mimarinin temel taşı olarak ele alır. Bu yaklaşım, özellikle çok sayıda eşzamanlı isteğin işlendiği API'lerde giriş çıkış (I/O) bekleme sürelerinin daha verimli yönetilmesine imkân tanır. Ayrıca FastAPI, yazılan kod üzerinden otomatik olarak Swagger (OpenAPI) arayüzü ve etkileşimli dokümantasyon üretir; bu da geliştiricinin ayrı bir dokümantasyon aracı kurma zahmetinden kurtulmasını sağlar.
Burada önemli bir noktanın altını çizmek gerekir: FastAPI, Flask ve Django birbirinin rakibi gibi görünse de üçü de aynı temelden, yani Python programlama dilinden beslenir. Bir framework'ü öğrenmeden önce dilin kendisine hâkim olmak, hangi aracı seçerseniz seçin sizi bir adım öne taşır. Nitekim birebir Python dersleri kapsamında verilen eğitimlerde de önce dilin mantığı, sonra framework'lerin özel yapıları ele alınır. İlerleyen bölümlerde bu üç framework'ün mimari farklarını, performans yaklaşımlarını ve öğrenme eğrilerini daha derinlemesine karşılaştıracağız.
Django'nun "Her Şey Dahil" Felsefesi: ORM, Admin Panel ve Kapsamlı Yapı
Django, sıklıkla "batteries-included" (piller dahil) felsefesiyle tanımlanır; bu ifade, framework'ün web geliştirme sürecinde ihtiyaç duyulabilecek neredeyse her bileşeni kutudan çıktığı gibi sunmasını ifade eder. Bir geliştirici Django ile çalışmaya başladığında veritabanı erişimi, form işleme, kullanıcı kimlik doğrulama ve yönetim paneli gibi bileşenleri sıfırdan kurmak zorunda kalmaz; bunların hepsi framework'ün kendi ekosisteminde hazır biçimde bulunur.
Bu yapının en somut örneklerinden biri yerleşik ORM'dir (Object-Relational Mapping); geliştirici, ham SQL sorguları yazmak yerine Python sınıfları üzerinden veritabanı işlemlerini yönetebilir. Buna ek olarak Django'nun otomatik oluşturulan admin paneli, veritabanındaki kayıtları görsel bir arayüz üzerinden yönetmeyi mümkün kılar; bu özellik özellikle içerik yönetimi ağırlıklı projelerde geliştirme süresini ciddi biçimde kısaltır. Kimlik doğrulama, oturum yönetimi ve form doğrulama gibi bileşenler de benzer şekilde hazır sunulur.
Bu kapsamlı yapı, büyük ve uzun ömürlü projelerde belirgin bir avantaja dönüşür. Örneğin çok sayıda modülün, kullanıcı rolünün ve veri ilişkisinin yönetildiği bir kurumsal içerik platformunda, her bileşeni ayrı ayrı seçip entegre etmek yerine tutarlı bir standart üzerinden ilerlemek, ekip büyüdükçe ortaya çıkabilecek uyumsuzlukları azaltır. Django'nun dosya yapısı, isimlendirme kuralları ve proje organizasyonu konusunda belirlediği standartlar, farklı geliştiricilerin aynı kod tabanında tutarlı biçimde çalışmasını kolaylaştırır.
Ancak bu kapsamın bir bedeli vardır: esneklik bir miktar kısıtlanır. Framework, birçok mimari kararı geliştirici adına önceden vermiştir; hangi ORM'in kullanılacağı, proje klasörlerinin nasıl düzenleneceği, kimlik doğrulamanın nasıl işleyeceği gibi konularda Django kendi yolunu dayatır. Bu durum, "Django'nun düşünme biçimine" uyum sağlamayı gerektirir ve farklı bir mimari tercih etmek isteyen geliştiriciler için bazen sınırlayıcı hissedilebilir.
Flask'ın Minimalist Mikro-Framework Yaklaşımı

Flask, kendisini bilinçli olarak bir "mikro-framework" olarak tanımlar; bu terim, framework'ün küçük ve basit olduğu anlamına gelmez, aksine çekirdeğinin minimal tutulduğu ve genişletme kararlarının geliştiriciye bırakıldığı anlamına gelir. Flask kurulduğunda yönlendirme (routing) ve temel istek-yanıt döngüsü dışında hazır gelen çok az bileşen vardır; geri kalan her şey isteğe bağlı eklentilerle inşa edilir.
Bu yaklaşımın pratik sonucu şudur: bir Flask projesinde veritabanı erişimi için ORM kullanmak isteyen geliştirici bu aracı kendisi seçer, kimlik doğrulama gerekiyorsa bunun için ayrı bir kütüphane entegre eder, form doğrulama ihtiyacı varsa yine buna uygun bir çözüm ekler. Django'da bu bileşenler hazır gelirken, Flask'ta her biri bilinçli bir tercih ve ayrı bir kurulum adımı gerektirir. Bu durum, projeye tam olarak ihtiyaç duyulan bileşenlerin eklenmesini sağlarken, aynı zamanda bu seçimlerin doğru yapılması sorumluluğunu da geliştiriciye yükler.
Esneklik ile sorumluluk arasındaki bu denge, Flask'ı özellikle küçük ölçekli servisler, prototipler ve öğrenme amaçlı projeler için cazip kılar. Az sayıda uç nokta (endpoint) içeren basit bir API, bir iç araç veya bir fikri hızlıca test etmek için kurulan bir uygulama, Django'nun sunduğu kapsamlı yapıya ihtiyaç duymayabilir; bu gibi durumlarda Flask'ın sade çekirdeği, gereksiz karmaşıklık olmadan hızlı bir başlangıç sunar. Aynı zamanda Flask'ın az sayıda kavramla çalışması, framework mantığını yeni öğrenen geliştiriciler için daha anlaşılır bir giriş noktası oluşturur.
Bir Python framework'ünü öğrenmeden önce dilin temel yapı taşlarını -fonksiyonlar, modüller, nesne yönelimli programlama mantığı- sağlam biçimde kavramak, Flask gibi minimal bir yapıda karşılaşılan boşlukları kendi başına doldurabilmeyi kolaylaştırır. Bu noktada birebir Python dersleri ile bireysel ihtiyaca göre ilerlemek, framework'e geçmeden önce dil hakimiyetini pekiştirmek isteyenler için pratik bir yol olabilir. Flask'ın minimalizmi bir eksiklik değil, farklı bir tasarım tercihidir; hangi projede daha uygun olduğu ilerleyen bölümlerde daha net biçimde ele alınacaktır.
FastAPI'nin Tip Belirteçli ve Async-First Mimarisi
FastAPI'yi diğer Python web framework'lerinden ayıran en belirgin özelliklerden biri, standart Python tip belirteçlerini (type hints) sadece kod okunabilirliği için değil, doğrudan çalışma zamanı davranışını şekillendirmek için kullanmasıdır. Bir fonksiyon parametresine int, str ya da özel bir veri modeli yazdığınızda, FastAPI bu bilgiyi hem gelen isteği doğrulamak hem de dokümantasyon üretmek için otomatik olarak işler. Yani geliştirici ayrı bir doğrulama katmanı yazmak zorunda kalmadan, fonksiyon imzasının kendisi bir sözleşmeye dönüşür.
Bu mantığı somutlaştırmak için basit bir örnek yeterlidir. Aşağıdaki uç nokta, URL yolundan gelen bir kimliği int tipinde bekler:
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str | None = None):
return {"item_id": item_id, "q": q}
Bu birkaç satırlık kod çalıştırıldığında, istemci /items/abc gibi sayısal olmayan bir değer gönderirse FastAPI isteği otomatik olarak reddeder ve anlamlı bir hata mesajı döner; ayrı bir if bloğu veya harici doğrulama kütüphanesi yazmaya gerek kalmaz. Aynı tip bilgisi, tarayıcıdan erişilebilen interaktif Swagger/OpenAPI arayüzünü de otomatik olarak oluşturur; geliştirici hiçbir ek yapılandırma yapmadan uç noktaların parametrelerini, dönüş tiplerini ve örnek isteklerini görebilir.
Django ve Flask'ta aynı sonucu almak mümkündür, ancak yol farklıdır. Django'da form ve serializer sınıfları (özellikle Django REST Framework ile) benzer bir doğrulama sağlar, fakat bu genellikle ayrı bir sınıf tanımı gerektirir. Flask'ta ise çekirdek kütüphanenin kendisi böyle bir mekanizma sunmaz; geliştiricinin Marshmallow veya Pydantic gibi ek bir kütüphane entegre etmesi ya da doğrulamayı manuel olarak yazması gerekir. FastAPI'nin farkı, bu davranışı framework'ün merkezine, fonksiyon imzasının kendisine yerleştirmiş olmasıdır.
Performans Farkının Kaynağı: ASGI ve WSGI Kavramları
Django ve Flask'ın klasik çalışma biçimi WSGI (Web Server Gateway Interface) standardına dayanır. WSGI, her isteği sırayla, bir istek tamamlanmadan bir sonraki işleme geçmeden ele alan senkron bir arayüzdür. Bir istek veritabanı sorgusu, dosya okuma veya dış bir servise bağlanma gibi bekleme gerektiren bir işlem yaptığında, o worker (işçi süreç) tüm işlem süresince meşgul kalır ve başka bir isteği işleyemez.
FastAPI ise ASGI (Asynchronous Server Gateway Interface) üzerine kuruludur. ASGI, bekleme gerektiren işlemler sırasında sunucunun aynı worker içinde başka istekleri de işlemeye devam edebilmesini sağlayan asenkron bir modeldir. Bir istek dış bir API'den yanıt beklerken, sunucu o bekleme süresini boş geçirmek yerine başka bir isteğin işlenmesine ayırabilir. Bu, işlemcinin fiziksel olarak aynı anda iki işi yapması anlamına gelmez; daha çok, bekleme sürelerinin verimli kullanılmasıdır.
Bu yapısal farkın pratikteki etkisi iş yükünün türüne bağlıdır. Az sayıda isteğin işlendiği, her isteğin ağırlıklı olarak işlemci gücü tükettiği (CPU-bound) senaryolarda ASGI ile WSGI arasındaki fark sınırlı kalır. Ancak aynı anda çok sayıda isteğin geldiği ve her isteğin çoğunlukla veritabanı, dosya sistemi veya harici servis beklemesiyle geçtiği (I/O-bound) senaryolarda ASGI modeli, kaynakları daha verimli kullanma potansiyeli sunar. Somut sayısal karşılaştırmalar sunucu donanımına, veritabanı yapılandırmasına ve kod kalitesine göre önemli ölçüde değiştiğinden, framework seçimini yalnızca bu kavramsal farka dayandırmak yerine projenin gerçek iş yükü profiline bakmak daha sağlıklıdır.
Async/Await Yapısı: Eşzamansız Programlamaya Kısa Bir Bakış

Python'da async ve await anahtar kelimeleri, bir fonksiyonun bekleme gerektiren bir işlem sırasında kontrolü başka bir işleme devretmesine izin veren yapılardır. Bunu bir restoran garsonuna benzetmek mümkündür: senkron bir garson bir masanın siparişini mutfağa iletir ve yemek hazır olana kadar orada bekler, bu sürede başka masaya bakamaz. Asenkron bir garson ise siparişi mutfağa iletir, yemek pişerken başka masaların siparişini almaya devam eder ve yemek hazır olduğunda geri dönüp servis yapar. İkisi de aynı işi yapar, fark verimli zaman kullanımındadır.
Kod düzeyinde bu fark şöyle görünür: normal (senkron) bir fonksiyon çağrıldığında, o satır tamamlanana kadar programın geri kalanı beklemek zorundadır. async def ile tanımlanan bir fonksiyon ise içinde await ile işaretlenmiş bir bekleme noktasına geldiğinde, o anki görevi askıya alıp olay döngüsünün (event loop) başka bir görevi çalıştırmasına izin verir. Bu mekanizma tek başına hız katmaz; asıl faydası, bekleme sürelerinin boşa harcanmamasıdır.
FastAPI'de async def kullanımı zorunlu değildir; framework hem normal def hem de async def ile tanımlanan uç noktaları destekler. async def kullanmak, yalnızca fonksiyon içinde veritabanı sürücüsü, HTTP istemcisi veya dosya işlemi gibi gerçekten await edilebilir (asenkron destekli) bir kütüphane çağrıldığında anlam kazanır. Senkron bir kütüphaneyi async def içine koymak, beklenen verimlilik kazanımını sağlamaz; hatta yanlış kullanıldığında olay döngüsünü bloke ederek performansı olumsuz etkileyebilir. Bu nedenle async yapısını kullanmadan önce projede gerçekten asenkron destekli kütüphanelerin bulunup bulunmadığını değerlendirmek gerekir.
Öğrenme Eğrisi Karşılaştırması: Hangi Framework Ne Kadar Zor?
Üç framework de aynı dilin üzerine kurulu olsa da, bir geliştiricinin ilk projeyi ayağa kaldırana kadar geçireceği süre birbirinden oldukça farklıdır. Flask'ta birkaç satır kodla çalışan bir sunucu görmek mümkündür; bu da onu kavramları adım adım öğrenmek isteyenler için erişilebilir kılar. Ancak bu kolaylık bir tuzak da barındırır: proje büyüdükçe hangi kütüphanenin nasıl entegre edileceğine dair kararları geliştiricinin kendisi vermek zorunda kalır, bu da orta-ileri seviyede ayrı bir öğrenme yükü oluşturur.
Django'nun öğrenme eğrisi ise farklı bir noktada zorlaşır. Framework'ün kendisi basit bir sözdizimiyle başlasa da, ORM'nin çalışma mantığını, ayarlar dosyasının yapısını, middleware zincirini ve admin panelin özelleştirme sınırlarını kavramak zaman alır. Bu, kapsam genişliğinden kaynaklanan bir zorluktur; Django'yu gerçek anlamda verimli kullanabilmek, sadece sözdizimini değil bütün bir mimariyi öğrenmeyi gerektirir.
FastAPI ise farklı bir ön koşul talep eder. Tip belirteçleriyle yazılan fonksiyon imzalarını doğru okuyabilmek için Python'un tip sistemine aşina olmak gerekir; ayrıca framework'ün async-first yaklaşımı, geliştiricinin eşzamansız programlama mantığını en azından temel düzeyde anlamasını bekler. Bu ön koşullar sağlandığında FastAPI ile hızlı ilerlemek mümkün olsa da, sıfırdan başlayan biri için bu iki kavram başlı başına bir öğrenme eşiği oluşturur. Nitekim birebir Python dersleri öncesinde mevcut seviyeyi ölçmek isteyenler için hazırlanmış testler, bu tip bir hazır bulunuşluk farkını görmek açısından faydalı bir başlangıç noktası olabilir.
| Framework | Felsefe | Öğrenme Eğrisi | Performans Yaklaşımı | İdeal Kullanım Alanı |
|---|---|---|---|---|
| Django | Her şey dahil, kurallı yapı | Başlangıçta orta, kapsam nedeniyle ilerleyen aşamada yüksek | Senkron WSGI, olgun önbellekleme araçlarıyla desteklenir | Kurumsal, uzun ömürlü ve çok modüllü uygulamalar |
| Flask | Minimalist, esnek mikro-framework | Başlangıçta düşük, büyüdükçe artan mimari sorumluluk | Senkron WSGI, ihtiyaca göre genişletilebilir | Küçük servisler, prototipler, özelleştirilmiş projeler |
| FastAPI | Tip belirteçli, async-first modern yaklaşım | Tip sistemi ve async bilgisi gerektirdiği için orta-yüksek | Asenkron ASGI, eşzamanlı istekleri verimli işler | Yüksek performanslı REST API'ler ve mikroservisler |
Hangi Senaryoda Hangi Framework Tercih Edilmeli?
Framework seçimi çoğu zaman "hangisi daha iyi" sorusundan çok "hangisi bu projeye daha uygun" sorusuna verilen cevaptır. Hızlı bir prototip üretmek, bir fikri kısa sürede test etmek veya küçük ölçekli bir servisi ayağa kaldırmak gerektiğinde Flask'ın minimal yapısı, gereksiz katmanlarla uğraşmadan doğrudan işlevselliğe odaklanma imkânı sunar. Bu esneklik, özellikle ekip küçükken ve gereksinimler henüz netleşmemişken avantaj sağlar.
Buna karşılık, kullanıcı yönetimi, yetkilendirme, admin paneli ve karmaşık veri ilişkilerinin baştan itibaren gerekli olduğu büyük ölçekli kurumsal uygulamalarda Django'nun hazır sunduğu bileşenler zamandan tasarruf sağlar. Uzun vadede birden fazla geliştiricinin çalışacağı, sürdürülebilir bir kod tabanı gerektiren projelerde bu kurallı yapı bir dezavantaj değil, disiplin kaynağı hâline gelir. FastAPI ise özellikle yüksek eşzamanlı istek trafiğinin olduğu, birden fazla servisin birbiriyle REST üzerinden konuştuğu mikroservis mimarilerinde öne çıkar; otomatik veri doğrulama ve tip güvenliği, API'lerin büyüdükçe daha az hataya açık kalmasına yardımcı olur.
Doğru kararı vermek için birkaç kriteri sırayla değerlendirmek faydalı olur:
- Projenin ölçeği: Küçük ve hızlı mı, yoksa uzun vadeli ve kapsamlı mı?
- Ekibin deneyimi: Ekip async programlama ve tip sistemine ne kadar aşina?
- Performans gereksinimi: Yoğun eşzamanlı trafik bekleniyor mu, yoksa standart bir yük yeterli mi?
- Bakım süresi: Proje kaç yıl aktif olarak geliştirilecek ve kaç kişi üzerinde çalışacak?
Bu kriterleri netleştirmek, sadece framework seçimini değil genel kariyer yönünü belirlemek isteyenler için de anlamlıdır; ücretsiz kariyer testi bu tür yönelim kararlarında bir referans noktası oluşturabilir.
Framework Seçiminden Önce Python Temeli: Neden Dil Hakimiyeti Önce Gelir
Django, Flask ve FastAPI birbirinden farklı felsefelere sahip olsa da üçü de aynı temel üzerine inşa edilmiştir: sağlam bir Python bilgisi. Bir geliştirici fonksiyonları, sınıfları, hata yönetimini, modül yapısını ve veri yapılarını iyi kavramadan hangi framework'ü seçerse seçsin, karşılaştığı hataların kaynağını anlamakta zorlanır. Framework belgeleri genellikle "Python biliyorsunuz" varsayımıyla yazılır; bu varsayım sağlanmadığında öğrenme süreci framework kurallarıyla dil kurallarının iç içe geçtiği, kafa karıştırıcı bir hâle dönüşür.
Bu nedenle framework seçimi, dil hakimiyetinden sonra gelen ikinci bir karardır, ilk karar değil. Tip belirteçlerini anlamlı kullanabilmek, async/await yapısının neden gerekli olduğunu kavrayabilmek veya Django'nun ORM'sinin arkasındaki nesne yönelimli mantığı çözebilmek, hepsi öncesinde net bir Python temeli gerektirir. Bu temel olmadan seçilen framework ne kadar "doğru" olursa olsun, ilerleyen aşamalarda geri dönüp dil seviyesindeki eksikleri kapatmak kaçınılmaz hâle gelir.
Bu nedenle framework öğrenmeye başlamadan önce dilin kendisine zaman ayırmak, uzun vadede çok daha verimli bir yol izlemeyi sağlar. 1-1 özel Python dersleri gibi yapılandırılmış bir süreçte fonksiyonlardan nesne yönelimli programlamaya, hata yönetiminden veri yapılarına kadar olan temel konuları oturtmak, hangi framework'ün seçileceğinden bağımsız olarak kalıcı bir avantaj sağlar. Framework tercihleri zamanla değişebilir, ama sağlam bir dil temeli her zaman taşınabilir bir kazanımdır.
Sık Sorulan Sorular
FastAPI nedir ve Flask'tan temel farkı nedir?
FastAPI, tip belirteçleri üzerine kurulu ve async-first çalışan modern bir Python web framework'üdür. Flask ise minimalist bir mikro-framework olarak senkron çalışır ve tip sistemini zorunlu kılmaz; temel fark, FastAPI'nin baştan itibaren asenkron istekleri ve otomatik veri doğrulamayı merkezine alması, Flask'ın ise bu tür özellikleri geliştiriciye ek kütüphanelerle bırakmasıdır.
Django hangi tür projelerde tercih edilmelidir?
Django, kullanıcı yönetimi, admin paneli ve karmaşık veri ilişkilerinin baştan itibaren gerekli olduğu, uzun ömürlü ve çok modüllü kurumsal uygulamalarda tercih edilmesi mantıklı olan bir framework'tür. "Her şey dahil" felsefesi, büyük ekiplerin uzun vadede sürdürülebilir bir yapı üzerinde çalışmasını kolaylaştırır.
FastAPI öğrenmeden önce Flask veya Django bilmek gerekir mi?
Hayır, FastAPI öğrenmek için Flask veya Django bilmek şart değildir. Ancak sağlam bir Python temeli, özellikle tip belirteçleri ve fonksiyon yapıları konusunda rahatlık, FastAPI'ye geçişi belirgin şekilde kolaylaştırır.
Async/await kullanmak her projede zorunlu mudur?
Hayır, async/await her projede zorunlu değildir. Düşük-orta trafikli, basit veri işlemleri yapan uygulamalarda senkron yapı yeterli olabilir; asenkron programlama özellikle yüksek eşzamanlı istek yükü olan sistemlerde anlamlı bir fark yaratır.
Yeni başlayanlar için hangi framework daha kolay öğrenilir?
Flask, minimal yapısı sayesinde genellikle ilk adım için daha erişilebilir bulunur; birkaç satır kodla çalışan bir uygulama görmek mümkündür. Ancak bu kolaylık, projenin büyümesiyle birlikte geliştiricinin daha fazla mimari karar almasını gerektirir.
FastAPI'nin otomatik dokümantasyon özelliği nasıl çalışır?
FastAPI, fonksiyonlardaki tip belirteçlerini ve veri modellerini okuyarak Swagger/OpenAPI uyumlu bir dokümantasyon arayüzünü otomatik olarak oluşturur. Bu sayede geliştirici ayrıca dokümantasyon yazmadan, API uç noktalarını tarayıcı üzerinden test edebilir.
Framework seçmeden önce Python'da hangi seviyede olmalıyım?
Fonksiyonlar, sınıflar, hata yönetimi ve temel veri yapılarına hakim olmak, framework seçimine geçmeden önce beklenen asgari seviyedir. Bu temel sağlam olmadan seçilen framework fark etmeksizin, ilerleyen aşamalarda dil seviyesindeki eksiklerle uğraşmak kaçınılmaz hâle gelir.
Sonuç olarak Django, Flask ve FastAPI arasındaki seçim; proje ölçeği, ekip deneyimi ve performans gereksinimi gibi somut kriterlere göre şekillenmesi gereken teknik bir karardır, hiçbiri diğerinden mutlak olarak üstün değildir. Bu kararı sağlıklı verebilmek için önce dilin kendisinde yetkinleşmek isteyenler, canlı Python ve Java eğitimleri üzerinden yapılandırılmış bir öğrenme sürecine göz atabilir.