Python

bilgipedi.com.tr sitesinden
Python
Python logo and wordmark.svg
Paradigması çok paradigmalı: nesne yönelimli, zorunlu, fonksiyonel, yansıtıcı
İlk çıkışı 1990
Tasarımcı Guido van Rossum
Geliştirici Python Yazılım Vakfı
Kararlı sürüm

3.9.4 / 5 Ekim 2020 (2 yıl önce)
2.7.18 / 20 Nisan 2020 (2 yıl önce)

(04.04.2021)
Önizleme sürümü

3.10.0a2

(4 Kasım 2020 (2 yıl önce))
Tip sistemi güçlü, dinamik
Önemli uygulamaları CPython, IronPython, Jython, Python for S60, PyPy, Unladen Swallow
Lehçeleri Stackless Python, RPython
Etkilendikleri ABC, ALGOL 68, C, Haskell, Icon, Java, Lisp, Modula-3, Perl
Etkiledikleri Boo, Cobra, D, Falcon, Groovy, Ruby, JavaScript, Comfy, Land (programlama dili)
Platformu çapraz platform
İşletim sistemi macOS, Linux, Windows, OpenBSD, FreeBSD
Lisans Python Yazılım Vakfı Lisansı
Olağan dosya uzantıları .py, .pyw, .pyc, .pyo, .pyd, .pyz
Web sitesi www.python.org

Python, nesne yönelimli, yorumlamalı, birimsel (modüler) ve etkileşimli yüksek seviyeli bir programlama dilidir.

Girintilere dayalı basit söz dizimi, dilin öğrenilmesini ve akılda kalmasını kolaylaştırır. Bu da ona söz diziminin ayrıntıları ile vakit yitirmeden programlama yapılmaya başlanabilen bir dil olma özelliği kazandırır.

Modüler yapısı, sınıf dizgesini (sistem) ve her türlü veri alanı girişini destekler. Hemen hemen her türlü platformda çalışabilir (Unix, Linux, Mac, Windows, Amiga, Symbian). Python ile sistem programlama, kullanıcı arabirimi programlama, ağ programlama, web programlama, uygulama ve veri tabanı yazılımı programlama gibi birçok alanda yazılım geliştirebilirsiniz. Büyük yazılımların hızlı bir şekilde prototiplerinin üretilmesi ve denenmesi gerektiği durumlarda da C ya da C++ gibi dillere tercih edilir.

Python 1980'lerin sonunda ABC programlama diline alternatif olarak tasarlanmıştı. Python 2.0, ilk kez 2000 yılında yayınlandı. 2008'de yayınlanan Python 3.0, dilin önceki versiyonuyla tam uyumlu değildir ve Python 2.x'te yazılan kodların Python 3.x'te çalışması için değiştirilmesi gerekmektedir. Python 2 versiyonun resmi geliştirilme süreci, dilin son sürümü olan Python 2.7.x serisi versiyonların ardından 1 Ocak 2020 itibarıyla resmi olarak sona erdi. Python 2.x geliştirilme desteğinin sona ermesinin ardından, Python dilinin 3.6.x ve sonraki sürümlerinin geliştirilmesi devam etmektedir.

Python yüksek seviyeli, yorumlanmış, genel amaçlı bir programlama dilidir. Tasarım felsefesi, önemli girinti kullanımı ile kod okunabilirliğini vurgular.

Python dinamik olarak tiplenir ve çöp toplar. Yapılandırılmış (özellikle prosedürel), nesne yönelimli ve fonksiyonel programlama dahil olmak üzere çoklu programlama paradigmalarını destekler. Kapsamlı standart kütüphanesi nedeniyle genellikle "piller dahil" bir dil olarak tanımlanır.

Python sürekli olarak en popüler programlama dillerinden biri olarak yer almaktadır.

Tarihçe

Python'un tasarımcısı Guido van Rossum, OSCON 2006'da

Python, 1980'lerin sonunda Hollanda'daki Centrum Wiskunde & Informatica'da (CWI) Guido van Rossum tarafından, SETL'den esinlenen, istisna işleme ve Amoeba işletim sistemiyle arayüz oluşturma yeteneğine sahip ABC programlama dilinin bir halefi olarak tasarlandı. Uygulama Aralık 1989'da başladı. Van Rossum, Python topluluğunun projenin baş karar vericisi olarak uzun vadeli bağlılığını yansıtmak için kendisine verdiği bir unvan olan Python'un "ömür boyu hayırsever diktatörü" olarak sorumluluklarından "kalıcı tatilini" ilan ettiği 12 Temmuz 2018'e kadar baş geliştirici olarak projenin tek sorumluluğunu üstlendi. Ocak 2019'da, aktif Python çekirdek geliştiricileri projeye liderlik etmesi için beş üyeli bir Yönetim Konseyi seçti.

Python 2.0, 16 Ekim 2000 tarihinde birçok önemli yeni özellikle birlikte piyasaya sürüldü. Python 3.0, 3 Aralık 2008'de piyasaya sürüldü ve başlıca özelliklerinin çoğu Python 2.6.x ve 2.7.x'e geri aktarıldı. Python 3 sürümleri, Python 2 kodunun Python 3'e çevrilmesini otomatikleştiren 2to3 yardımcı programını içerir.

Python 2.7'nin kullanım ömrü sonu başlangıçta 2015 olarak belirlenmiş, daha sonra mevcut kodun büyük bir kısmının Python 3'e kolayca aktarılamayacağı endişesiyle 2020'ye ertelenmiştir. Bu sürüm için başka bir güvenlik yaması veya başka bir iyileştirme yayınlanmayacaktır. Python 2'nin kullanım ömrünün sona ermesiyle birlikte yalnızca Python 3.6.x ve sonrası desteklenmeye başlandı. Daha sonra 3.6 için de destek kesildi. 2021 yılında, Python'un tüm sürümlerinde (2.7 dahil) olası uzaktan kod çalıştırma ve web önbelleği zehirlenmesine yol açan güvenlik sorunları olduğu için Python 3.9.2 ve 3.8.8 hızlandırıldı.

2022'de Python 3.10.4 ve 3.9.12 hızlandırıldı ve birçok güvenlik sorunu nedeniyle 3.8.13 ve 3.7.13 dahil olmak üzere eski sürümler de hızlandırıldı. Python 3.9.13 en son 3.9 sürümüdür ve bundan sonra 3.9 (ve daha eski; 3.8 ve 3.7) yalnızca güvenlik güncellemeleri alacaktır.

Tasarım felsefesi ve özellikler

Python çok paradigmalı bir programlama dilidir. Nesne yönelimli programlama ve yapısal programlama tam olarak desteklenir ve özelliklerinin çoğu işlevsel programlama ve görünüş yönelimli programlamayı destekler (metaprogramlama ve metaobjeler [sihirli yöntemler] dahil). Diğer birçok paradigma, sözleşmeye göre tasarım ve mantık programlama dahil olmak üzere uzantılar aracılığıyla desteklenir.

Python, bellek yönetimi için dinamik yazım ve referans sayma ile döngü algılayan çöp toplayıcı kombinasyonunu kullanır. Program yürütme sırasında yöntem ve değişken adlarını bağlayan dinamik ad çözümlemesi (geç bağlama) kullanır.

Tasarımı Lisp geleneğinde fonksiyonel programlama için bazı destekler sunar. Filter, mapandreduce fonksiyonları; liste kavramaları, sözlükler, kümeler ve üretici ifadeleri vardır. Standart kütüphane, Haskell ve Standart ML'den ödünç alınan fonksiyonel araçları uygulayan iki modüle (itertools ve functools) sahiptir.

Temel felsefesi, aşağıdaki gibi aforizmalar içeren Python'un Zen'i (PEP 20) belgesinde özetlenmiştir:

  • Güzel çirkinden daha iyidir.
  • Açıklık, kapalılıktan daha iyidir.
  • Basit, karmaşıktan daha iyidir.
  • Karmaşık, karmaşık olmaktan iyidir.
  • Okunabilirlik önemlidir.

Python, tüm işlevselliğini çekirdeğine inşa etmek yerine, modüller aracılığıyla oldukça genişletilebilir olacak şekilde tasarlanmıştır. Bu kompakt modülerlik onu özellikle mevcut uygulamalara programlanabilir arayüzler ekleme aracı olarak popüler hale getirmiştir. Van Rossum'un geniş bir standart kütüphaneye ve kolayca genişletilebilir yorumlayıcıya sahip küçük bir çekirdek dil vizyonu, tam tersi bir yaklaşımı benimseyen ABC ile yaşadığı hayal kırıklıklarından kaynaklanıyordu.

Python, geliştiricilere kodlama metodolojilerinde bir seçenek sunarken daha basit, daha az karmaşık bir sözdizimi ve dilbilgisi için çabalar. Perl'ün "bunu yapmanın birden fazla yolu var" sloganının aksine, Python "bunu yapmanın tek ve tercihen sadece tek bir yolu olmalı" felsefesini benimser. Python Yazılım Vakfı Üyesi ve Python kitabı yazarı Alex Martelli şöyle yazmıştır: "Python kültüründe bir şeyi 'zekice' olarak tanımlamak bir iltifat olarak görülmez."

Python'un geliştiricileri, erken optimizasyondan kaçınmaya çalışmakta ve CPython referans uygulamasının kritik olmayan kısımlarına, netlik pahasına hızda marjinal artışlar sağlayacak yamaları reddetmektedir. Hız önemli olduğunda, bir Python programcısı zaman açısından kritik işlevleri C gibi dillerde yazılmış uzantı modüllerine taşıyabilir; veya tam zamanında derleyici PyPy'yi kullanabilir. Bir Python betiğini C'ye çeviren ve Python yorumlayıcısına doğrudan C düzeyinde API çağrıları yapan Cython da mevcuttur.

Python'un geliştiricileri Python'un kullanımının eğlenceli olmasını amaçlamaktadır. Bu, İngiliz komedi grubu Monty Python'a bir övgü olan isminde ve standart foo ve bar yerine spam ve yumurtalara (bir Monty Python skecine gönderme) atıfta bulunan örnekler gibi öğretici ve referans materyallere zaman zaman eğlenceli yaklaşımlarda yansıtılır.

Programlama dilinin 'Python' adı 1970'lerde BBC'de yayınlanan Monty Python's Flying Circus adlı komedi dizisinden gelmektedir. Guido van Rossum kısa, benzersiz ve biraz da gizemli bir isme ihtiyacı olduğunu düşündü ve programlama diline 'Python' adını vermeye karar verdi.

Python topluluğundaki yaygın bir neolojizm, program stiliyle ilgili geniş bir anlam yelpazesine sahip olan pythonic'tir. "Pythonic" kod Python deyimlerini iyi kullanabilir, doğal olabilir veya dilde akıcılık gösterebilir veya Python'un minimalist felsefesine ve okunabilirlik vurgusuna uygun olabilir. Anlaşılması zor olan veya başka bir programlama dilinden kaba bir transkripsiyon gibi okunan kod, Pythonik olmayan olarak adlandırılır.

Python kullanıcıları ve hayranları, özellikle bilgili veya deneyimli olarak kabul edilenler, genellikle Pythonistas olarak adlandırılır.

Sözdizimi ve anlambilim

Python kolay okunabilir bir dil olarak tasarlanmıştır. Biçimlendirmesi görsel olarak derli topludur ve diğer dillerin noktalama işaretleri kullandığı yerlerde genellikle İngilizce anahtar kelimeler kullanır. Diğer birçok dilin aksine, blokları sınırlandırmak için küme parantezleri kullanmaz ve ifadelerden sonra noktalı virgüllere izin verilir, ancak nadiren kullanılır. C veya Pascal'a göre daha az sözdizimsel istisnaya ve özel duruma sahiptir.

Girinti

Python, blokları sınırlandırmak için küme parantezleri veya anahtar kelimeler yerine boşluk girintisi kullanır. Girintideki artış belirli ifadelerden sonra gelir; girintideki azalma mevcut bloğun sonunu gösterir. Böylece, programın görsel yapısı anlamsal yapısını doğru bir şekilde temsil eder. Bu özellik bazen off-side kuralı olarak adlandırılır. Diğer bazı diller girintiyi bu şekilde kullanır; ancak çoğunda girintinin anlamsal bir anlamı yoktur. Önerilen girinti boyutu dört boşluktur.

İfadeler ve kontrol akışı

Python'un deyimleri şunları içerir:

  • Tek bir eşittir işareti kullanarak atama deyimi =
  • else ve elif (else-if'in kısaltması) ile birlikte bir kod bloğunu koşullu olarak çalıştıran if deyimi
  • Bir yinelenebilir nesne üzerinde yineleme yapan for deyimi, her bir öğeyi ekli blok tarafından kullanılmak üzere yerel bir değişkene yakalar
  • Koşul doğru olduğu sürece bir kod bloğunu çalıştıran while deyimi
  • Ekli kod bloğunda ortaya çıkan istisnaların except cümleleri (veya Python 3.11'de istisna grupları için yeni sözdizimi except*) tarafından yakalanmasını ve işlenmesini sağlayan try deyimi; ayrıca bir finally bloğundaki temizleme kodunun, bloktan nasıl çıkıldığına bakılmaksızın her zaman çalıştırılmasını sağlar
  • Belirtilen bir istisnayı yükseltmek veya yakalanan bir istisnayı yeniden yükseltmek için kullanılan raise deyimi
  • Nesne yönelimli programlamada kullanılmak üzere bir kod bloğunu çalıştıran ve yerel ad alanını bir sınıfa ekleyen class deyimi
  • Bir işlevi veya yöntemi tanımlayan def deyimi
  • Bir bağlam yöneticisi içinde bir kod bloğunu çevreleyen with deyimi (örneğin, çalıştırılmadan önce bir kilit edinme, ardından kilidi serbest bırakma; veya bir dosyayı açma ve kapatma), kaynak edinme-başlatma (RAII) benzeri davranışa izin verir ve yaygın bir try/finally deyiminin yerini alır
  • Bir döngüden çıkan break deyimi
  • Mevcut yinelemeyi atlayan ve bir sonraki yineleme ile devam eden continue deyimi
  • Bir değişkeni kaldıran del deyimi - addan değere olan referansı siler ve değişkene yeniden tanımlanmadan önce atıfta bulunulursa hata üretir
  • NOP görevi gören pass deyimi, sözdizimsel olarak boş bir kod bloğu oluşturmak için gereklidir
  • Uygulanması gereken koşulları kontrol etmek için hata ayıklamada kullanılan assert deyimi
  • Bir üreteç işlevinden (ve aynı zamanda bir işleçten) bir değer döndüren yield deyimi; korutinleri uygulamak için kullanılır
  • Bir fonksiyondan değer döndürmek için kullanılan return deyimi
  • İşlevleri veya değişkenleri mevcut programda kullanılabilen modülleri içe aktarmak için kullanılan import deyimi

Atama deyimi (=) bir ismi ayrı, dinamik olarak tahsis edilmiş bir nesneye referans olarak bağlar. Değişkenler daha sonra herhangi bir zamanda herhangi bir nesneye yeniden bağlanabilir. Python'da bir değişken adı, sabit bir veri türü olmayan genel bir referans tutucudur; ancak her zaman bir türü olan bir nesneye atıfta bulunur. Buna dinamik tipleme denir - her değişkenin yalnızca belirli bir türde bir değer içerebileceği statik olarak tiplenmiş dillerin aksine.

Python, kuyruk çağrısı optimizasyonunu veya birinci sınıf devamlılıkları desteklemez ve van Rossum'a göre hiçbir zaman da desteklemeyecektir. Bununla birlikte, Python'un üreteçleri genişletilerek korutin benzeri işlevsellik için daha iyi destek sağlanmıştır. 2.5'ten önce, üreteçler tembel yineleyicilerdi; veriler üreteçten tek yönlü olarak geçiriliyordu. Python 2.5'ten itibaren, verileri bir üreteç işlevine geri aktarmak mümkündür; ve 3.3 sürümünden itibaren, birden fazla yığın seviyesinden geçirilebilir.

İfadeler

Bazı Python ifadeleri C ve Java gibi dillerdekilere benzerken bazıları benzemez:

  • Toplama, çıkarma ve çarpma aynıdır, ancak bölme işleminin davranışı farklıdır. Python'da iki tür bölme vardır: taban bölme (veya tamsayı bölme) // ve kayan nokta/bölme. Python ayrıca üs alma işlemi için ** operatörünü kullanır.
  • @ infix operatörü. NumPy gibi kütüphaneler tarafından matris çarpımı için kullanılmak üzere tasarlanmıştır.
  • "Mors operatörü" olarak adlandırılan := sözdizimi Python 3.8'de tanıtıldı. Daha büyük bir ifadenin parçası olarak değişkenlere değer atar.
  • Python'da ==, sayısal değerleri değerle ve nesneleri referansla karşılaştıran Java'ya karşı değerle karşılaştırır. Python'un is operatörü nesne kimliklerini karşılaştırmak için kullanılabilir (referansa göre karşılaştırma) ve karşılaştırmalar zincirleme olabilir - örneğin, a <= b <= c.
  • Python, Java ve C'deki sembolik &&, ||, ! yerine boolean operatörleri olarak and, or ve not kullanır.
  • Python, liste kavrama adı verilen bir ifade türünün yanı sıra üretici ifade adı verilen daha genel bir ifadeye sahiptir.
  • Anonim fonksiyonlar lambda ifadeleri kullanılarak uygulanır; ancak, her gövdede yalnızca bir ifade olabilir.
  • Koşullu ifadeler şu şekilde yazılır x if c else y (diğer birçok dilde yaygın olan c ? x : y işlecinden işlenenlerin sırası bakımından farklıdır).
  • Python listeler ve tuple'lar arasında bir ayrım yapar. Listeler şu şekilde yazılır [1, 2, 3]değişebilirdir ve sözlüklerin anahtarları olarak kullanılamaz (Python'da sözlük anahtarları değişmez olmalıdır). Tuple'lar, şu şekilde yazılır (1, 2, 3)değişmezdir ve bu nedenle, tuple'ın tüm öğelerinin değişmez olması koşuluyla sözlüklerin anahtarları olarak kullanılabilir. İki tuple'ı birleştirmek için + operatörü kullanılabilir, bu da içeriklerini doğrudan değiştirmez, ancak her ikisinin öğelerini içeren yeni bir tuple üretir. Böylece, başlangıçta eşit olan t değişkeni göz önüne alındığında (1, 2, 3), yürütmek t = t + (4, 5) önce değerlendirir t + (4, 5)Bu da şu sonucu verir (1, 2, 3, 4, 5)daha sonra t'ye geri atanır; böylece tuple nesnelerinin değişmez doğasına uyarken t'nin içeriğini etkili bir şekilde "değiştirir". Belirsiz bağlamlardaki tuple'lar için parantezler isteğe bağlıdır.
  • Python, her biri atanabilecek herhangi bir şeye (bir değişkene, yazılabilir özelliğe, vb.) değerlendirilen birden fazla ifadenin, tuple değişmezlerini oluşturanla aynı şekilde ilişkilendirildiği ve bir bütün olarak bir atama deyimindeki eşittir işaretinin sol tarafına yerleştirildiği sıra açma özelliğine sahiptir. Deyim, eşittir işaretinin sağ tarafında, sağlanan yazılabilir ifadelerle aynı sayıda değer üreten bir yinelenebilir nesne bekler; bunlar arasında yinelendiğinde, üretilen değerlerin her birini soldaki karşılık gelen ifadeye atar.
  • Python, C'deki printf format dizelerine benzer şekilde işlev gören bir "string format" operatörü %'ye sahiptir, örn. "spam=%s eggs=%d" % ("blah", 2) "spam=blah eggs=2" olarak değerlendirilir. Python 2.6+ ve 3+'da, bu str sınıfının format() metodu ile desteklenmiştir, örn. "spam={0} eggs={1}".format("blah", 2). Python 3.6 "f dizeleri" ekledi: spam = "blah"; eggs = 2; f'spam={spam} eggs={eggs}'.
  • Python'da dizeler "eklenerek" birleştirilebilir (tamsayılar ve kayan sayıların eklenmesiyle aynı operatörle), örn. "spam" + "yumurta" "spameggs" döndürür. Dizeler sayı içeriyorsa, tamsayılar yerine dizeler olarak eklenir, örn. "2" + "2" "22" döndürür.
  • Python'un çeşitli string değişmezleri vardır:
    • Tek veya çift tırnak işareti ile sınırlandırılmıştır. Unix kabukları, Perl ve Perl'den etkilenmiş dillerin aksine, tek ve çift tırnak işaretleri aynı işlevi görür. Her ikisi de kaçış karakteri olarak ters eğik çizgi (\) kullanır. Dize enterpolasyonu Python 3.6'da "biçimlendirilmiş dize değişmezleri" olarak kullanılabilir hale geldi.
    • Üç tırnaklı (üç tek veya çift tırnak işareti ile başlayan ve biten), birden fazla satıra yayılabilir ve kabuklarda, Perl'de ve Ruby'de buradaki belgeler gibi işlev görür.
    • Ham dize çeşitleri, dize değişmezinin önüne r getirilerek gösterilir. Kaçış dizileri yorumlanmaz; bu nedenle ham dizeler, düzenli ifadeler ve Windows tarzı yollar gibi değişmez ters eğik çizgilerin yaygın olduğu yerlerde kullanışlıdır. (C#'taki "@-quoting" ile karşılaştırın.)
  • Python, a[key] olarak gösterilen listelerde dizi dizini ve dizi dilimleme ifadelerine sahiptir, a[start:stop] veya a[start:stop:step]. İndeksler sıfır tabanlıdır ve negatif indeksler sona göredir. Dilimler, başlangıç indeksinden durma indeksine kadar olan ancak durma indeksini içermeyen öğeleri alır. Step veya stride adı verilen üçüncü dilim parametresi, öğelerin atlanmasına ve tersine çevrilmesine olanak tanır. Dilim indeksleri atlanabilir-örneğin, a[:] tüm listenin bir kopyasını döndürür. Bir dilimin her öğesi sığ bir kopyadır.

Python'da, Common Lisp, Scheme veya Ruby gibi dillerin aksine, ifadeler ve deyimler arasındaki ayrım katı bir şekilde uygulanır. Bu, bazı işlevlerin tekrarlanmasına yol açar. Örneğin:

  • Liste kavramaları vs. for-döngüleri
  • Koşullu ifadeler ve eğer blokları
  • eval() ve exec() yerleşik fonksiyonları (Python 2'de exec bir deyimdir); ilki ifadeler için, ikincisi deyimler içindir

İfadeler bir ifadenin parçası olamaz; bu nedenle liste ve diğer kavramlar veya lambda ifadeleri, hepsi birer ifade olduğundan, ifade içeremez. Özel bir durum, aşağıdaki gibi bir atama ifadesidir a = 1 bir koşullu ifadenin koşullu ifadesinin bir parçasını oluşturamaz. Bu, klasik bir C hatası olan = atama operatörünün koşullarda == eşitlik operatörüyle karıştırılmasını önleme avantajına sahiptir: if (c = 1) { ... } sözdizimsel olarak geçerli (ancak muhtemelen amaçlanmamış) C kodudur, ancak if c = 1: ... Python'da bir sözdizimi hatasına neden olur.

Yöntemler

Nesneler üzerindeki yöntemler, nesnenin sınıfına bağlı işlevlerdir; sözdizimi instance.method(argument) normal metotlar ve fonksiyonlar için sözdizimsel şekerdir. Class.method(instance, argument). Python yöntemleri, diğer bazı nesne yönelimli programlama dillerindeki (örn. C++, Java, Objective-C, Ruby) örtük self (veya this) parametresinin aksine, örnek verisine erişmek için açık bir self parametresine sahiptir. Python ayrıca, kullanıcı tanımlı sınıfların uzunluk, karşılaştırma, aritmetik işlemler ve tür dönüştürme gibi yerel işlemler tarafından nasıl ele alındıklarını değiştirmelerine izin vermek için genellikle dunder yöntemleri (çift alt çizgi ile başlayan ve biten adları nedeniyle) olarak adlandırılan yöntemler sağlar.

Tipleme

Python 3'teki standart tür hiyerarşisi

Python ördek tiplemesi kullanır ve tiplenmiş nesnelere sahiptir ancak tiplenmemiş değişken isimleri vardır. Tür kısıtlamaları derleme zamanında kontrol edilmez; bunun yerine, bir nesne üzerindeki işlemler başarısız olabilir, bu da uygun bir türde olmadığını gösterir. Dinamik tipli olmasına rağmen, Python güçlü tiplidir, iyi tanımlanmamış işlemleri (örneğin, bir dizeye bir sayı eklemek) sessizce anlamlandırmaya çalışmak yerine yasaklar.

Python, programcıların çoğunlukla nesne yönelimli programlama için kullanılan sınıfları kullanarak kendi türlerini tanımlamalarına izin verir. Sınıfların yeni örnekleri, sınıf çağrılarak oluşturulur (örneğin, SpamClass() veya YumurtaSınıfı()) ve sınıflar metaclass tipinin örnekleridir (kendisi de kendisinin bir örneğidir), metaprogramlama ve yansımaya izin verir.

Sürüm 3.0'dan önce, Python'un iki tür sınıfı vardı (her ikisi de aynı sözdizimini kullanır): eski stil ve yeni stil, mevcut Python sürümleri yalnızca yeni stil semantiğini destekler.

Uzun vadeli plan kademeli tiplemeyi desteklemektir. Python'un sözdizimi statik tiplerin belirtilmesine izin verir, ancak bunlar varsayılan uygulama olan CPython'da kontrol edilmez. Deneysel bir isteğe bağlı statik tip denetleyicisi olan mypy, derleme zamanı tip denetimini destekler.

Python 3'ün yerleşik türlerinin özeti
Tip Değişkenlik Açıklama Sözdizimi örnekleri
bool değişmez Boolean değer Doğru
Yanlış
bytearray değiştirilebilir Bayt dizisi bytearray(b'Some ASCII')
bytearray(b "Some ASCII")
bytearray([119, 105, 107, 105])
baytlar değişmez Bayt dizisi b'Some ASCII'
b "Bazı ASCII"
bytes([119, 105, 107, 105])
karmaşık değişmez Gerçek ve hayali kısımları olan karmaşık sayı 3+2.7j
3 + 2.7j
diktatör değiştirilebilir Anahtar ve değer çiftlerinden oluşan ilişkisel dizi (veya sözlük); karışık tipler (anahtarlar ve değerler) içerebilir, anahtarlar hashlenebilir bir tip olmalıdır {'key1': 1.0, 3: False}
{}
types.EllipsisType değişmez NumPy dizilerinde dizin olarak kullanılacak bir elips yer tutucu ...
Ellipsis
şamandıra değişmez Çift hassasiyetli kayan noktalı sayı. Hassasiyet makineye bağlıdır ancak pratikte genellikle 53 bit hassasiyete sahip 64 bit IEEE 754 sayısı olarak uygulanır.

1.33333

frozenset değişmez Sırasız küme, kopya içermez; karma yapılabilirse karışık türler içerebilir frozenset([4.0, 'string', True])
int değişmez Sınırsız büyüklükte tamsayı 42
Liste değiştirilebilir Liste, karışık türler içerebilir [4.0, 'string', True]
[]
types.NoneType değişmez Bir değerin yokluğunu temsil eden bir nesne, genellikle diğer dillerde null olarak adlandırılır Hiçbiri
types.NotImplementedType değişmez Desteklenmeyen işlenen türlerini belirtmek için aşırı yüklenmiş işleçlerden döndürülebilen bir yer tutucu. Uygulanmamış
aralık değişmez Genellikle for döngülerinde belirli sayıda döngü oluşturmak için kullanılan bir sayı dizisi aralık(-1, 10)
aralık(10, -5, -2)
set değiştirilebilir Sırasız küme, kopya içermez; karma yapılabilirse karışık türler içerebilir {4.0, 'string', True}
set()
str değişmez Bir karakter dizesi: Unicode kod noktaları dizisi 'Wikipedia'
"Wikipedia"
"""Spanning
çoklu
çizgiler"""
Yayılma
çoklu
Çizgiler
tuple değişmez Karışık tipler içerebilir (4.0, 'string', True)
('tek eleman',)
()

Aritmetik işlemler

Python, aritmetik operatörler (+, -, *, /), taban bölme operatörü // ve modulo işlemi % (burada kalan negatif olabilir, örneğin 4 % -3 == -2) için olağan sembollere sahiptir. Ayrıca üs alma için **, örneğin 5**3 == 125 ve 9**0.5 == 3.0 ve bir matris-çarpma operatörü @ vardır. Bu operatörler geleneksel matematikteki gibi çalışır; aynı öncelik kurallarıyla, operatörler infix (+ ve - sırasıyla pozitif ve negatif sayıları temsil etmek için unary de olabilir).

Tamsayılar arasındaki bölme işlemi kayan noktalı sonuçlar üretir. Bölme işleminin davranışı zaman içinde önemli ölçüde değişmiştir:

  • Güncel Python (yani 3.0'dan beri) / operatörünü her zaman kayan noktalı bölme olacak şekilde değiştirdi, örn. 5/2 == 2.5.
  • Taban bölme // operatörü tanıtıldı. Yani 7//3 == 2, -7//3 == -3, 7.5//3 == 2.0 ve -7.5//3 == -3.0. Ekleme from __future__ import division Python 2.7'de kullanılan bir modülün bölme işlemi için Python 3.0 kurallarını kullanmasına neden olur (yukarıya bakın).

Python terimleriyle, / gerçek bölme (veya basitçe bölme) ve // kat bölmedir. 3.0 sürümünden önce / klasik bölme işlemidir.

Negatif sonsuza doğru yuvarlama, çoğu dilden farklı olsa da tutarlılık sağlar. Örneğin, bu şu anlama gelir (a + b)//b == a//b + 1 her zaman doğrudur. Bu aynı zamanda denklemin b*(a//b) + a%b == a Ancak, bu denklemin geçerliliğini korumak, a%b sonucunun, beklendiği gibi, b pozitif bir tamsayı olduğunda yarı açık aralıkta [0, b) olduğu anlamına gelirken, b negatif olduğunda (b, 0] aralığında olması gerekir.

Python, bir floatı en yakın tam sayıya yuvarlamak için bir round işlevi sağlar. Eşitliği bozmak için Python 3 çift sayıya yuvarlamayı kullanır: round(1.5) ve round(2.5) her ikisi de 2 üretir. 3'ten önceki sürümlerde sıfırdan uzağa yuvarlama kullanılırdı: round(0.5) 1.0, round(-0.5) -1.0'dır.

Python, matematikteki genel kullanımla tutarlı bir şekilde birden fazla eşitlik ilişkisine sahip boolean ifadelere izin verir. Örneğin, a < b < c ifadesi a'nın b'den ve b'nin c'den küçük olup olmadığını test eder. C türevi diller bu ifadeyi farklı yorumlar: C'de, ifade önce a < b olarak değerlendirilir, 0 veya 1 ile sonuçlanır ve bu sonuç daha sonra c ile karşılaştırılır.

Python tüm tamsayı işlemleri için keyfi hassasiyetli aritmetik kullanır. Decimal modülündeki Decimal türü/sınıfı, önceden tanımlanmış keyfi bir hassasiyete ve çeşitli yuvarlama modlarına göre ondalık kayan noktalı sayılar sağlar. Fractions modülündeki Fraction sınıfı, rasyonel sayılar için keyfi hassasiyet sağlar.

Python'un kapsamlı matematik kütüphanesi ve yerel yetenekleri daha da genişleten üçüncü taraf NumPy kütüphanesi nedeniyle, sayısal veri işleme ve manipülasyon gibi sorunlara yardımcı olmak için sıklıkla bilimsel bir komut dosyası dili olarak kullanılır.

Programlama örnekleri

Merhaba dünya programı:

print('Merhaba dünya!') <span title="Kaynak: İngilizce Vikipedi, Bölüm &quot;Programming examples&quot;" class="plainlinks">[https://en.wikipedia.org/wiki/Python_(programming_language)#Programming_examples <span style="color:#dddddd">ⓘ</span>]</span>

Pozitif bir tamsayının faktöriyelini hesaplayan program:

n = int(input('Bir sayı yazın ve faktöriyeli yazdırılacaktır: ')) <span title="Kaynak: İngilizce Vikipedi, Bölüm &quot;Programming examples&quot;" class="plainlinks">[https://en.wikipedia.org/wiki/Python_(programming_language)#Programming_examples <span style="color:#dddddd">ⓘ</span>]</span>

if n < 0:
    raise ValueError('Negatif olmayan bir tamsayı girmelisiniz') <span title="Kaynak: İngilizce Vikipedi, Bölüm &quot;Programming examples&quot;" class="plainlinks">[https://en.wikipedia.org/wiki/Python_(programming_language)#Programming_examples <span style="color:#dddddd">ⓘ</span>]</span>

faktöriyel = 1
for i in range(2, n + 1):
    faktöriyel *= i <span title="Kaynak: İngilizce Vikipedi, Bölüm &quot;Programming examples&quot;" class="plainlinks">[https://en.wikipedia.org/wiki/Python_(programming_language)#Programming_examples <span style="color:#dddddd">ⓘ</span>]</span>

print(faktöriyel)

Kütüphaneler

Python'un geniş standart kütüphanesi birçok görev için uygun araçlar sağlar ve genellikle en güçlü yönlerinden biri olarak gösterilir. İnternete yönelik uygulamalar için MIME ve HTTP gibi birçok standart format ve protokol desteklenmektedir. Grafiksel kullanıcı arayüzleri oluşturmak, ilişkisel veritabanlarına bağlanmak, sözde rastgele sayılar üretmek, keyfi hassasiyetli ondalık sayılarla aritmetik yapmak, düzenli ifadeleri işlemek ve birim testi yapmak için modüller içerir.

Standart kütüphanenin bazı bölümleri spesifikasyonlarla kaplıdır - örneğin, Web Sunucusu Ağ Geçidi Arayüzü (WSGI) uygulaması wsgiref PEP 333'ü takip eder - ancak çoğu kodları, dahili belgeleri ve test paketleri ile belirtilmiştir. Bununla birlikte, standart kütüphanenin çoğu platformlar arası Python kodu olduğundan, yalnızca birkaç modülün değişken uygulamalar için değiştirilmesi veya yeniden yazılması gerekir.

Haziran 2022 itibariyle, üçüncü taraf Python yazılımı için resmi depo olan Python Paket Dizini (PyPI), aşağıdakiler de dahil olmak üzere geniş bir işlevsellik yelpazesine sahip 380.000'den fazla paket içermektedir:

  • Otomasyon
  • Veri analitiği
  • Veritabanları
  • Dokümantasyon
  • Grafik kullanıcı arayüzleri
  • Görüntü işleme
  • Makine öğrenimi
  • Mobil uygulamalar
  • Multimedya
  • Bilgisayar ağı
  • Bilimsel hesaplama
  • Sistem yönetimi
  • Test çerçeveleri
  • Metin işleme
  • Web çerçeveleri
  • Web kazıma

Geliştirme ortamları

Çoğu Python uygulaması (CPython dahil), kullanıcıların ifadeleri sırayla girdiği ve sonuçları hemen aldığı bir komut satırı yorumlayıcısı olarak işlev görmelerine izin veren bir oku-çöz-yaz döngüsü (REPL) içerir.

Python ayrıca IDLE adı verilen ve daha çok yeni başlayanlara yönelik olan bir Tümleşik geliştirme ortamı (IDE) ile birlikte gelir.

IDLE ve IPython da dahil olmak üzere diğer kabuklar, gelişmiş otomatik tamamlama, oturum durumu saklama ve sözdizimi vurgulama gibi daha fazla yetenek ekler.

Standart masaüstü tümleşik geliştirme ortamlarının yanı sıra, bilim ve matematikle ilgili programlar geliştirmek için SageMath; tarayıcı tabanlı bir IDE ve barındırma ortamı olan PythonAnywhere ve bilimsel hesaplamayı vurgulayan ticari bir IDE olan Canopy IDE dahil olmak üzere Web tarayıcısı tabanlı IDE'ler vardır.

Uygulamalar

Referans uygulama

CPython Python'un referans uygulamasıdır. C89 standardını karşılayan (Python 3.11 C11 kullanır) ve birkaç seçkin C99 özelliği ile C dilinde yazılmıştır (Daha sonraki C sürümleri çıktığında, modası geçmiş olarak kabul edilir. CPython kendi C uzantılarını içerir, ancak üçüncü taraf uzantıları eski C sürümleriyle sınırlı değildir - örneğin C11 veya C++ ile uygulanabilirler). Python programlarını daha sonra sanal makinesi tarafından çalıştırılan bir ara bayt koduna derler. CPython, C ve yerel Python karışımıyla yazılmış geniş bir standart kütüphane ile dağıtılır ve Windows (Python 3.9'dan başlayarak, Python yükleyicisi kasıtlı olarak Windows 7 ve 8'e yüklenemez; Windows XP, Python 3.5'e kadar destekleniyordu) ve macOS (ve Apple M1 Mac'ler, Python 3.9.1'den beri, deneysel yükleyici ile) dahil olmak üzere çoğu modern Unix benzeri sistem ve örneğin VMS için resmi olmayan destek dahil olmak üzere birçok platform için kullanılabilir. Platform taşınabilirliği ilk önceliklerinden biriydi. (Python 1 ve 2'nin geliştirilmesi sırasında OS/2 ve Solaris bile desteklendi, ancak o zamandan beri birçok platform için destek kesildi).

Diğer uygulamalar

  • PyPy, Python 2.7 ve 3.8'in hızlı ve uyumlu bir yorumlayıcısıdır. Tam zamanında derleyicisi CPython'a göre önemli bir hız artışı sağlar, ancak C ile yazılmış bazı kütüphaneler onunla kullanılamaz.
  • Stackless Python, CPython'un mikro iş parçacıklarını uygulayan önemli bir çatalıdır; çağrı yığınını aynı şekilde kullanmaz, böylece büyük ölçüde eşzamanlı programlara izin verir. PyPy'nin de yığınsız bir sürümü vardır.
  • MicroPython ve CircuitPython, Lego Mindstorms EV3 dahil olmak üzere mikrodenetleyiciler için optimize edilmiş Python 3 varyantlarıdır.
  • Pyston, Python programlarının yürütülmesini hızlandırmak için tam zamanında derleme kullanan Python çalışma zamanının bir çeşididir.
  • Cinder, CPython 3.8'in performans odaklı bir çatalıdır ve bytecode satır içi önbelleğe alma, korutinlerin istekli değerlendirmesi, bir seferde bir yöntem JIT ve deneysel bir bytecode derleyicisi dahil olmak üzere bir dizi optimizasyon içerir.

Desteklenmeyen uygulamalar

Diğer tam zamanında Python derleyicileri geliştirilmiştir, ancak artık desteklenmemektedir:

  • Google, 2009 yılında LLVM kullanarak Python yorumlayıcısını beş kat hızlandırmak ve sıradan uygulamalar küresel yorumlayıcı kilidinden muzdaripken, binlerce çekirdeğe ölçeklendirmek için çoklu iş parçacığı yeteneğini geliştirmek amacıyla Unladen Swallow adlı bir proje başlattı.
  • Psyco, CPython ile entegre olan ve bytecode'u çalışma zamanında makine koduna dönüştüren, durdurulmuş bir tam zamanında özelleştirme derleyicisidir. Yayılan kod belirli veri türleri için özelleştirilmiştir ve standart Python kodundan daha hızlıdır. Psyco, Python 2.7 veya sonraki sürümleri desteklemez.
  • PyS60, 2005 yılında Nokia tarafından piyasaya sürülen Series 60 cep telefonları için bir Python 2 yorumlayıcısıydı. Standart kütüphanedeki modüllerin çoğunu ve Symbian işletim sistemiyle entegre olmak için bazı ek modülleri uyguladı. Nokia N900 ayrıca GTK widget kütüphaneleri ile Python'u destekleyerek programların hedef cihaz üzerinde yazılmasını ve çalıştırılmasını sağlar.

Diğer dillere çapraz derleyiciler

Kısıtlanmamış Python, Python'un kısıtlanmış bir alt kümesi veya kaynak dil olarak Python'a benzer bir dil ile yüksek seviyeli nesne dillerine yönelik birkaç derleyici vardır:

  • Brython, Transcrypt ve Pyjs (2012'deki son sürüm) Python'u JavaScript'e derler.
  • Cython, Python 2.7'yi (bir üst kümesini) C'ye derler (elde edilen kod Python 3 ve örneğin C++ ile de kullanılabilir).
  • Nuitka Python'u C'ye derler.
  • Numba, Python'un bir alt kümesini makine koduna derlemek için LLVM kullanır.
  • Pythran Python 3'ün bir alt kümesini C++'a (C++11) derler.
  • RPython C'ye derlenebilir ve Python'un PyPy yorumlayıcısını oluşturmak için kullanılır.
  • Python → 11l → C++ transpiler Python 3'ün bir alt kümesini C++'a (C++17) derler.

Uzmanlaşmış:

  • MyHDL, MyHDL kodunu Verilog veya VHDL koduna dönüştüren Python tabanlı bir donanım tanımlama dilidir (HDL).

Eski projeler (veya Python 3.x ve en son sözdizimi ile kullanılmamalıdır):

  • Google'ın Grumpy'si (2017'deki son sürüm) Python 2'yi Go'ya aktarmaktadır.
  • IronPython, Python 2.7 programlarını çalıştırmaya izin verir (ve 2021'de yayınlanan bir alfa, "Python 3.4 için de mevcuttur, ancak sonraki sürümlerdeki özellikler ve davranışlar dahil edilebilir") .NET Common Language Runtime üzerinde.
  • Jython, Python 2.7'yi Java bayt koduna derleyerek Java kütüphanelerinin bir Python programından kullanılmasına izin verir.
  • Pyrex (son sürüm 2010) ve Shed Skin (son sürüm 2013) sırasıyla C ve C++'a derler.

Performans

Çeşitli Python uygulamalarının sayısal olmayan (kombinatoryal) bir iş yükü üzerindeki performans karşılaştırması EuroSciPy '13'te sunulmuştur. Python'un diğer programlama dillerine kıyasla performansı The Computer Language Benchmarks Game tarafından da kıyaslanmıştır.

Gelişim

Python'un gelişimi büyük ölçüde Python Geliştirme Önerisi (PEP) süreci aracılığıyla yürütülür, bu süreç önemli yeni özelliklerin önerilmesi, sorunlar hakkında topluluk girdilerinin toplanması ve Python tasarım kararlarının belgelenmesi için birincil mekanizmadır. Python kodlama stili PEP 8'de ele alınmaktadır. Öne çıkan PEP'ler Python topluluğu ve yönlendirme konseyi tarafından gözden geçirilir ve yorumlanır.

Dilin geliştirilmesi, CPython referans uygulamasının geliştirilmesine karşılık gelir. Python-dev posta listesi, dilin geliştirilmesi için birincil forumdur. Belirli sorunlar bugs.python.org adresinde barındırılan Roundup hata izleyicisinde tartışılmaktadır. Geliştirme, Python Ocak 2017'de GitHub'a taşınana kadar Mercurial çalıştıran kendi kendine barındırılan bir kaynak kodu deposunda gerçekleşti.

CPython'un halka açık sürümleri, sürüm numarasının hangi kısmının artırıldığına göre ayırt edilen üç türde gelir:

  • Kodun kırılmasının beklendiği ve manuel olarak taşınması gereken geriye dönük uyumsuz sürümler. Sürüm numarasının ilk kısmı artırılır. Bu sürümler nadiren yayınlanır - 3.0 sürümü 2.0'dan 8 yıl sonra yayınlanmıştır. Guido van Rossum'a göre 4.0 sürümünün çıkması çok düşük bir ihtimaldir.
  • Major veya "özellik" sürümleri önceki sürümle büyük ölçüde uyumludur ancak yeni özellikler sunar. Sürüm numarasının ikinci kısmı artırılır. Python 3.9 ile başlayarak, bu sürümlerin yıllık olarak gerçekleşmesi beklenmektedir. Her ana sürüm, yayınlandıktan sonra birkaç yıl boyunca hata düzeltmeleri ile desteklenir.
  • Yeni özellikler getirmeyen hata düzeltme sürümleri yaklaşık her 3 ayda bir gerçekleşir ve son sürümden bu yana yeterli sayıda hata düzeltildiğinde yapılır. Bu sürümlerde güvenlik açıkları da yamalanır. Sürüm numarasının üçüncü ve son kısmı artırılır.

Birçok alfa, beta ve sürüm adayı da önizleme olarak ve nihai sürümlerden önce test edilmek üzere yayınlanır. Her sürüm için kabaca bir program olmasına rağmen, kod hazır değilse genellikle ertelenir. Python'un geliştirme ekibi, geliştirme sırasında büyük birim test paketini çalıştırarak kodun durumunu izler.

Python üzerine düzenlenen en önemli akademik konferans PyCon'dur. Pyladies gibi özel Python mentorluk programları da vardır.

Python 3.10, wstr'yi kullanımdan kaldırdı (Python 3.12'de kaldırılacak; yani Python uzantılarının o zamana kadar değiştirilmesi gerekiyor) ve dile desen eşleştirmesi ekledi.

API dokümantasyon jeneratörleri

Python API için dokümantasyon oluşturabilen araçlar arasında pydoc (standart kütüphanenin bir parçası olarak mevcuttur), Sphinx, Pdoc ve çatalları, Doxygen ve Graphviz sayılabilir.

Adlandırma

Python'un adı, Python'un yaratıcısı Guido van Rossum'un dili geliştirirken keyif aldığı İngiliz komedi grubu Monty Python'dan gelmektedir. Monty Python referansları Python kodunda ve kültüründe sıkça görülür; örneğin, Python literatüründe sıklıkla kullanılan metasyntactic değişkenler geleneksel foo ve bar yerine spam ve eggs'tir. Resmi Python belgeleri de Monty Python rutinlerine çeşitli referanslar içerir.

Py- öneki bir şeyin Python ile ilgili olduğunu göstermek için kullanılır. Python uygulamalarının veya kütüphanelerinin adlarında bu ön ekin kullanımına örnek olarak SDL'yi Python'a bağlayan Pygame (genellikle oyun oluşturmak için kullanılır); sırasıyla Qt ve GTK'yı Python'a bağlayan PyQt ve PyGTK; ve orijinal olarak Python'da yazılmış bir Python uygulaması olan PyPy verilebilir.

Popülerlik

2003 yılından itibaren PythonTIOBE Programlama Topluluğu Endeksi'nde en popüler 10 programlama dili arasında istikrarlı bir şekilde yer alırken, Ekim 2021 itibarıyla Java ve C programlama dillerini geçerek en popüler dil konumunda bulunmaktadır. 2007, 2010, 2018 and 2020 yıllarında ise bir yıl içerisindeki en yüksek kademe artışı çatısı altında “Yılın Programlama Dili” seçilmiştir ve bunu 4 kez yapabilen tek dildir.

Deneysel bir akademik çalışma, Python gibi komut dosyası yazma dillerinin, dize işlemeyi ve sözlükte aramayı içeren programlama sorunları için C ve Java gibi geleneksel dillerden daha üretken olduğunu raporlamış, bellek tüketiminin genellikle "Java'dan daha verimli ve C veya C++’dan çok daha verimsiz” olmadığını saptamıştır.

Python kullanan büyük kuruluşlar arasında Wikipedia, Google, Yahoo! CERN, NASA, Facebook, Amazon, Instagram ve Spotify gibi bazı kuruluşlar yer almaktadır. Sosyal haber ağı sitesi Reddit, çoğunlukla Python ile yazılmıştır.

Kullanım Alanları

Python Destekli

Python, örneğin Apache web sunucusu için mod_wsgi aracılığıyla web uygulamaları için bir komut dosyası dili olarak kullanılabilir. Web Sunucusu Ağ Geçidi Arayüzü ile bu uygulamaları kolaylaştırmak için standart bir API geliştirilmiştir. Django, Pylons, Pyramid, TurboGears, web2py, Tornado, Flask, Bottle ve Zope gibi web çerçeveleri, karmaşık uygulamaların tasarımı ve bakımı konusunda geliştiricileri desteklemektedir. Pyjs ve IronPython, Ajax tabanlı uygulamaların istemci tarafını geliştirmek için kullanılabilir. SQLAlchemy, ilişkisel bir veritabanına veri eşleyici olarak kullanılabilir. Twisted, bilgisayarlar arasındaki iletişimi programlamak için bir çerçevedir ve (örneğin) Dropbox tarafından kullanılır.

NumPy, SciPy ve Matplotlib gibi kütüphaneler, Biopython ve Astropy gibi alana özgü işlevsellik sağlayan özel kütüphaneler ile Python'un bilimsel hesaplamada etkili bir şekilde kullanılmasına olanak tanır. SageMath, Python'da programlanabilen bir not defteri arayüzüne sahip bir bilgisayar cebiri sistemidir: kütüphanesi cebir, kombinatorik, sayısal matematik, sayı teorisi ve kalkülüs dahil olmak üzere matematiğin birçok yönünü kapsar. OpenCV, bilgisayarla görme ve görüntü işleme için zengin özelliklere sahip Python bağlarına sahiptir.

Python, TensorFlow, Keras, Pytorch ve Scikit-learn gibi kütüphanelerin yardımıyla yapay zeka projelerinde ve makine öğrenimi projelerinde yaygın olarak kullanılmaktadır. Modüler bir mimariye, basit sözdizimine ve zengin metin işleme araçlarına sahip bir komut dosyası dili olarak Python, genellikle doğal dil işleme için kullanılır.

Python, 2D oyunlar yapabilen Pygame gibi kütüphanelerle oyun oluşturmak için de kullanılabilir.

Python, Abaqus gibi sonlu elemanlar yöntemi yazılımı, FreeCAD gibi 3B parametrik modelleyici, 3ds Max, Blender, Cinema 4D, Lightwave, Houdini, Maya, modo, MotionBuilder, Softimage gibi 3B animasyon paketleri, görsel efekt kompozitörü Nuke, GIMP, Inkscape, Scribus ve Paint Shop Pro gibi 2B görüntüleme programları ve scorewriter ve capella gibi müzik notasyon programları dahil olmak üzere birçok yazılım ürününe bir komut dosyası dili olarak başarıyla yerleştirilmiştir. GNU Debugger, C++ konteynerleri gibi karmaşık yapıları göstermek için Python'u güzel bir yazıcı olarak kullanır. Esri, Python'u ArcGIS'te komut dosyaları yazmak için en iyi seçim olarak tanıtmaktadır. Ayrıca çeşitli video oyunlarında da kullanılmıştır ve Google App Engine'de mevcut üç programlama dilinden ilki olarak kabul edilmiştir, diğer ikisi Java ve Go'dur.

Birçok işletim sistemi Python'u standart bir bileşen olarak içerir. Çoğu Linux dağıtımı, AmigaOS 4 (Python 2.7 kullanıyor), FreeBSD (bir paket olarak), NetBSD ve OpenBSD (bir paket olarak) ile birlikte gelir ve komut satırından (terminal) kullanılabilir. Birçok Linux dağıtımı Python ile yazılmış yükleyiciler kullanır: Ubuntu Ubiquity yükleyicisini kullanırken, Red Hat Linux ve Fedora Linux Anaconda yükleyicisini kullanır. Gentoo Linux, paket yönetim sistemi Portage'da Python kullanmaktadır.

Python, istismar geliştirme de dahil olmak üzere bilgi güvenliği endüstrisinde yaygın olarak kullanılmaktadır.

Şu anda Sugar Labs'de geliştirilen One Laptop per Child XO için Sugar yazılımının çoğu Python ile yazılmıştır. Raspberry Pi tek kartlı bilgisayar projesi Python'u ana kullanıcı programlama dili olarak benimsemiştir.

LibreOffice Python içermektedir ve Java'yı Python ile değiştirmeyi amaçlamaktadır. Python Komut Dosyası Sağlayıcısı, 7 Şubat 2013 tarihli 4.0 Sürümünden bu yana temel bir özelliktir.

Django, Zope uygulama sunucuları, YouTube ve orijinal BitTorrent istemcisi Python kullanan önemli projelerden bazılarıdır. Ayrıca Google, NASA ve CERN gibi büyük kurumlar da Python kullanmaktadır. Pygame ile 2D oyun yapılabilir, Blockchain uygulamaları kodlanabilir, uzaktan kontrol veya görüntü işleme yapılabilir, veri analizi veya veri kontrolü yapılabilir, TensorFlow, PyTorch, Keras gibi kütüphanlerle derin makine öğrenmesi uygulamaları yapılabilir.

Python'dan Etkilenen Programlama Dilleri

Python programlama dilinin tasarımı ve felsefesi, diğer birçok programlama diline de ilham vermiş veya bu dillere etki etmiştir:

  • Boo, benzer bir girintileme, sözdizimi ve nesne modeli kullanır.
  • Cobra, benzer bir girintileme ve sözdizimi kullanır ve “Teşekkürler” kısmında bu dilin gelişimine ilham olan diller arasında Python ilk sırada yer alır.
  • JavaScript ile çapraz derlenen bir programlama dili olan CoffeeScript, Python'dan ilham almış bir sözdizimine sahiptir.
  • ECMAScript/JavaScript, Python'dan yineleyiciler ve oluşturucular ödünç almıştır.
  • Python'a çok benzeyen bir betik dil olan GDScript, Godot oyun motoruna yerleştirilmiştir.
  • Go, "Python gibi dinamik bir dilde çalışma hızı" ve dizileri dilimlemek için aynı sözdizimini paylaşması için tasarlanmıştır.
  • Groovy, Python tasarım felsefesini Java'ya getirme motivasyonuyla geliştirilmiştir.
  • Julia, “genel programlama için Python kadar kullanılabilir” olma hedefiyle tasarlanmıştır.
  • Nim, girintileme ve benzer sözdizimi kullanır.
  • Ruby'nin yaratıcısı Yukihiro Matsumoto Ruby’in gelişimine yönelik şunları ifade etmiştir: "Perl'den daha güçlü ve Python'dan daha nesne yönelimli bir betik dil hedefliyordum. Bu yüzden kendi dilimi tasarlamaya karar verdim."
  • Apple tarafından geliştirilen bir programlama dili olan Swift, Python'dan ilham alan bir sözdizimine sahiptir.

Python'un geliştirme uygulamaları diğer diller tarafından da taklit edilmiştir. Örneğin, Python'da “PEP” olarak geçen, bu dile yönelik bir değişikliğin gerekçesini ve bununla ilgili konuları açıklayan belge talep etme uygulaması, Tcl, Erlang, ve Swift'de de kullanılmaktadır.

Geçmiş

Guido van Rossum

Geliştirilmeye 1990 yılında Guido van Rossum tarafından Amsterdam'da başlanmıştır. Adını sanılanın aksine bir yılandan değil Guido van Rossum’un çok sevdiği, Monty Python adlı altı kişilik bir İngiliz komedi grubunun Monty Python’s Flying Circus adlı gösterisinden almıştır. Günümüzde Python Yazılım Vakfı çevresinde toplanan gönüllülerin çabalarıyla sürdürülmektedir. Python 1.0 sürümüne Ocak 1994'te ulaşmıştır. 2.0 sürümü 16 Ekim 2000'de yayınlanmıştır. 3 Aralık 2008 tarihinden itibaren 3.x serisi yayınlanmaya başlamıştır; ancak 3.x serisi 2.x serisiyle uyumlu değildir.

Söz dizimi

Python programlama dilinin söz dizimi ve renklendirmesi.

Python'un son derece kolay okunabilir olması düşünülmüştür. Bu yüzden örneğin küme parantezleri yerine girintileme işlemi kullanılır. Hatta bazı durumlarda girintileme işlemine dahi gerek kalmadan kodun ilgili bölümü tek satırda yazılabilir. Böylece Python, program kodunuzu en az çaba ile ve hızlıca yazmanıza imkân tanır. Sade sözdizimi ile diğer programlama dillerinden üstündür.

İşleçler

* işleci, çarpma işlemleri için

/ işleci, bölme işlemleri için

// işleci, tam sayı bölme işlemleri için

+ işleci, toplama işlemleri için

- işleci, çıkarma işlemleri için

% işleci, mod alma işlemleri için

< işleci, 'küçüktür' anlamına gelir

> işleci, 'büyüktür' anlamına gelir

== işleci, 'eşittir' anlamına gelir

<= işleci, 'küçük eşittir' anlamına gelir

>= işleci, 'büyük eşittir' anlamına gelir

!= işleci, 'eşit değil' anlamına gelir

** işleci, 'üs alma' anlamına gelir

True işleci, 'doğru' anlamına gelir

False işleci, 'yanlış' anlamına gelir

and işleci, 've' anlamına gelir

or işleci, 'veya' anlamına gelir

not işleci, 'değil' anlamına gelir.

Standart kütüphane

Python'un çok büyük bir standart kütüphanesi 30 Mart 2020 tarihinde Wayback Machine sitesinde arşivlendi. vardır. Bu, dilin artı özelliklerinden biri olarak kabul edilir.

Örnekler

Python 3 ve üstü sürümler için uygundur.

Yorum satırları

#Tek satırlık bir python yorumu
"""Bu çok satırlı
bir python 
yorumu""" <span title="Kaynak: Türkçe Vikipedi, Bölüm &quot;Yorum satırları&quot;" class="plainlinks">[https://tr.wikipedia.org/wiki/Python#Yorum_satırları <span style="color:#dddddd">ⓘ</span>]</span>

Sürüm Geçmişi

Sürüm Tarih
0.9 20 Şubat 1991
1.0 26 Ocak 1994
1.1 11 Ekim 1994
1.2 13 Nisan 1995
1.3 13 Ekim 1995
1.4 25 Ekim 1996
1.5 31 Aralık 1997
1.6 5 Eylül 2000
2.0 16 Ekim 2000
2.1 15 Nisan 2001
2.2 21 Aralık 2001
2.3 29 Haziran 2003
2.4 30 Kasım 2004
2.5 19 Eylül 2006
2.6 1 Ekim 2008
2.7 3 Temmuz 2010
3.0 3 Aralık 2008
3.1 27 Haziran 2009
3.2 20 Şubat 2011
3.3 19 Eylül 2012
3.4 16 Mart 2014
3.5 13 Eylül 2015
3.6 23 Aralık 2016
3.7 27 Haziran 2018
3.8 14 Ekim 2019
3.9 5 Ekim 2020