Python Kodları Nasıl Çalışır?

python kodları nasıl çalışır
medium.com

Python öğrenimine başlanmadan önce Python kodlarının bilgisayar diline nasıl çevrildiği bilinmelidir.

py uzantılı bir dosyada print("Hello World") değerlerinden oluşan basit bir kod yazdığımızda Python öncelikle bu kodu Compiler adı verilen derleyicide kontrol etmektedir. Örneğin kodumuzu print("Hello World" şeklinde parantezi kapatmadan yazarsak syntax (sözdizimi) hatası alacağız. Bu hatayı Python'un compiler'ı (derleyicisi) bize göstermektedir. Fakat compiler'ın ana görevi syntax hatalarını bulmak değil yazdığımız kodları 0 ve 1'lerden oluşan bilgisayarların anlayacağı dil olan byte kodlarına çevirmektedir.

bytecode

Yukarıdaki örnekte basit bir a nesnesi oluşturduk. a'ya "Hello World" tanımlaması yaptık ve yazdırdık. Bu kodların bilgisayar dilinine nasıl çevrildiğini görmek için import dis ile CPython Disassembler modülünü çağırdık. (CPython'a birazdan değineceğiz.) Bu sayede yazdığımız kodların bilgisayar dilindeki karşılıklarını çıktı alanında gördük.

Python derlenen kodları bilgisayar diline çevirirken py dosya uzantılarını pyc uzantısı olarak oluşturmaktadır. Bu sebeple pyc uzantılı tüm Python dosyaları aynı zamanda Python bytecode'larını içeren dosyalardır.

Üçüncü aşamada bilgisayar diline çevrilen kodlar Python Virtual Machine (PVM) adı verilen sanal bir makine üzerinde Python kütüphaneleri ve modülleri kullanılarak çıktı hâline getirilmektedir. Bu sayede Python kodlarımız çalışmaktadır.

Bir önceki konuda online Python editörleri kullanılırken ücretsiz olarak tahsis edilen işlemci, RAM (bellek) ve kapasite değerleri dikkatinizi çekmiş olmalı. Bunlar aslında PVM'nin kullandığı sanal makinenin sistem değerlerini belirtmektedir.


Interpreter

Visual Studio Code ve PyCharm kullanırken sıklıkla göreceğimiz konulardan biri de interpreter'dır. Interpreter, compiler, bytecode ve virtual machine aşamalarının tümünü kapsayan genel bir tanımlamadır. Dilimizdeki karşılığı çevirmendir. VS Code'da ilk kez bir Python dosyası ya da PyCharm'da yeni bir proje oluşturduğumuzda editor bizden hangi interpreter'ı kullanmamız gerektiğini soracaktır. Bu çoğunlukla python.org adresinden indirdiğimiz Python'un son sürümü olacaktır. Özetle, Python'u kurduğumuz zaman aynı zamanda editörlerimizde kullanacağımız interpreter da kurulmuş olmaktadır. Python'u kurmadığımız zaman Visual Studio Code, PyCharm gibi hiçbir editör ve IDE, Python kodlarımızı çalıştıramayacaktır.

Bir editörde birden fazla interpreter çalıştırılabilmektedir. Örneğin bir projemizde Python 3.8.2 interpreter'ını kullanabileceğimiz gibi başka bir projede 3.10.4 sürümünü kullanabiliriz.


venv

Python Virtual Environments

PyCharm ile yeni bir proje oluştururken karşılaşacağımız özelliklerden biri de virtual environment'dır (venv'dir). venv'ler bir projeye ilgili Python versiyonunu ve Python modüllerini yükleyerek ilerleyen yıllarda projemizi çalıştırmamıza olanak sağlamaktadır.

Diyelim ki 2020 yılında bir proje oluşturduk. İçerisinde Python'un 3.8 sürümü ve pandas modülünün 1.1.1 versiyonu var. Bu projeyi 2024 yılında çalıştırmak istediğimizde ileri tarihli bir Python versiyonunu ve pandas'ın son sürümünü kullanmak zorunda kalacağız. Bu sebeple 2020 yılında yazdığımız kodlar 2024 yılında çalışmayabilir. Virtual environment bu noktada devreye girmektedir. Projemiz oluşturulurken PyCharm, venv de oluşturur. venv'nin içerisinde kullandığımız Python sürümünün ve import edeceğimiz kütüphanelerin kopyası yer alır. Bu sayede ilerleyen yıllarda Python'un eski sürümünü ve kullanacağımız kütüphanelerin, modüllerin eski versiyonu kurmadan projemizi çalıştırabiliriz. venv tam olarak bunu sağlamaktadır.

venv'ler PEP 405 ile standartlaştırılmıştır. Visual Studio Code'da venv'leri manuel olarak oluşturmamız gerekirken PyCharm bunu projenin başında otomatik yapmaktadır. Bu da PyCharm'ın diğer bir avantajıdır.


CPython

CPython, Python kaynak kodlarının yazıldığı dildir. C ve Python dillerinde yazılmıştır. Bugün python.org adresinden Python'un son sürümünü indirdiğimizde aslında CPython'u indirmekteyiz.

GitHub CPython adresinden CPython'un tüm kaynak kodlarına erişebilirsiniz. GitHub Python adresinden ise tüm geliştiricilerini görebilirsiniz. Aralarında Python'un kurucusu Guido van Rossum da bulunmaktadır.

CPython'a alternatif olarak Python'un Java dilindeki uyarlaması olan Jython, .NET geliştirmeleri için IronPython, CPython'a alternatif olarak geliştirilen PyPy örnek gösterilebilir. Tüm Python öğrenimimiz boyunca CPython kullanacağız. Yine de Python'un diğer dillerdeki uyarlamaları hakkında bilgi sahibi olunmasında fayda var.

Bir sonraki bölümde Python'da destek almak isteyeceğimiz durumlarda kullanabileceğimiz platformlara değineceğiz.

<<< Önceki Konu
Sonraki Konu >>>