Python (programlama dili) - Python (programming language)

Python
Python logosu ve wordmark.svg
ParadigmaÇoklu paradigma: işlevsel, zorunlu, nesne odaklı, yapılandırılmış, yansıtıcı
Tarafından tasarlandıGuido van Rossum
GeliştiriciPython Yazılım Vakfı
İlk ortaya çıktı1991; 29 yıl önce (1991)[1]
Kararlı sürüm
3.9.1 / 7 Aralık 2020; 7 gün önce (2020-12-07)[2]
Önizleme sürümü
3.10.0a3 / 7 Aralık 2020; 7 gün önce (2020-12-07)[3]
Yazma disipliniÖrdek, dinamik, kademeli (3.5'ten beri)[4]
işletim sistemiLinux, Mac os işletim sistemi, Windows 8 ve sonra
ve dahası
LisansPython Yazılım Vakfı Lisansı
Dosya adı uzantıları.py, .pyi, .pyc, .pyd, .pyo (3.5'ten önce),[5] .pyw, .pyz (3.5'ten itibaren)[6]
İnternet sitesiwww.python.org
Majör uygulamalar
CPython, PyPy, Yığınsız Python, MicroPython, CircuitPython, IronPython, Jython, RustPython
Lehçeler
Cython, RPython, Starlark[7]
Tarafından etkilenmiş
ABC,[8] Ada,[9] ALGOL 68,[10] APL,[11] C,[12] C ++,[13] CLU,[14] Dylan,[15] Haskell,[16] Simge,[17] Java,[18] Lisp,[19] Modula-3,[13] Perl, Standart ML[11]
Etkilenen
Apache Groovy, Boo, Kobra, CoffeeScript,[20] D, F #, Cin,[21] Git, JavaScript,[22][23] Julia,[24] Nim, Yüzük,[25] Yakut,[26] Swift[27]

Python bir yorumlanmış, yüksek seviye ve genel amaçlı programlama dili. Python'un tasarım felsefesi vurgular kod okunabilirliği dikkate değer kullanımı ile önemli boşluk. Onun dil yapıları ve nesne odaklı yaklaşım yardım etmeyi hedefliyor programcılar küçük ve büyük ölçekli projeler için net, mantıksal kod yazın.[28]

Python dinamik olarak yazılmış ve çöp toplanmış. Birden çok programlama paradigmaları, dahil olmak üzere yapılandırılmış (özellikle, prosedürel ), nesne odaklı, ve fonksiyonel programlama. Python, kapsamlı olması nedeniyle genellikle "piller dahil" bir dil olarak tanımlanır. standart kitaplık.[29]

Python, 1980'lerin sonunda oluşturuldu ve ilk olarak 1991'de yayınlandı. Guido van Rossum halefi olarak ABC programlama dili. 2000 yılında piyasaya sürülen Python 2.0, aşağıdakiler gibi yeni özellikler sunmuştur: liste anlayışları ve bir çöp toplama sistemi ile referans sayma ve 2020'de 2.7 sürümüyle kullanımdan kaldırıldı.[30] 2008'de piyasaya sürülen Python 3.0, tamamen olmayan dilin büyük bir revizyonuydu. geriye dönük uyumlu ve Python 2 kodlarının çoğu Python 3'te değiştirilmeden çalışmaz. Python 2'ler ile hayatın sonu, yalnızca Python 3.6.x[31] ve sonraki sürümler desteklenir, eski sürümler ör. Windows 7 (ve eski yükleyiciler 64 bit Windows ile sınırlı değildir).

Python tercümanlar ana akım için destekleniyor işletim sistemleri ve birkaç tane daha mevcut (ve geçmişte çok daha fazlasını destekledi). Küresel bir programcılar topluluğu geliştirir ve sürdürür CPython, bir ücretsiz ve açık kaynak[32] referans uygulaması. Kar amacı gütmeyen bir kuruluş olan Python Yazılım Vakfı, Python ve CPython geliştirme için kaynakları yönetir ve yönlendirir. Şu anda ile bağlı Java dünyadaki en popüler ikinci programlama dili olarak.[33][34]

Tarih

Guido van Rossum OSCON 2006'da

Python, 1980'lerin sonunda tasarlandı[35] tarafından Guido van Rossum -de Centrum Wiskunde ve Informatica (CWI) içinde Hollanda halefi olarak ABC programlama dili esinlenen SETL ),[36] yapabilen istisna işleme ve ile arayüz oluşturmak Amip işletim sistemi.[8] Uygulamasına Aralık 1989'da başlandı.[37] Van Rossum, Python'un sorumluluklarından "kalıcı tatilini" ilan ettiği 12 Temmuz 2018 tarihine kadar baş geliştirici olarak projenin sorumluluğunu üstlendi. Yaşam İçin Hayırsever Diktatör Python topluluğunun, projenin baş karar vericisi olarak uzun vadeli taahhüdünü yansıtması için ona bahşettiği bir unvan.[38] Şu anda liderliğini beş kişilik bir yönetim kurulu üyesi olarak paylaşıyor.[39][40][41] Ocak 2019'da aktif Python çekirdek geliştiricileri, projeye liderlik etmesi için Brett Cannon, Nick Coghlan, Barry Warsaw, Carol Willing ve Van Rossum'u beş üyeli bir "Yönlendirme Konseyi" ne seçti.[42] Guido van Rossum o zamandan beri 2020 Yürütme konseyi adaylığını geri çekti.[43]

Python 2.0, 16 Ekim 2000'de piyasaya sürüldü ve birçok önemli yeni özellikle birlikte döngü algılama Çöp toplayıcı ve için destek Unicode.[44]

Python 3.0, 3 Aralık 2008'de piyasaya sürüldü. Tamamen olmayan, dilin büyük bir revizyonuydu. geriye dönük uyumlu.[45] Başlıca özelliklerinin çoğu backported Python 2.6.x için[46] ve 2.7.x sürüm serisi. Python 3 sürümleri şunları içerir: 2'ye 3 Python 2 kodunun Python 3'e çevirisini otomatikleştiren (en azından kısmen) yardımcı program.[47]

Python 2.7'ler hayatın sonu Tarih başlangıçta 2015 olarak belirlendi, ardından mevcut kodun büyük bir kısmının Python 3'e kolayca iletilemeyeceği endişesi nedeniyle 2020'ye ertelendi.[48][49] Bunun için daha fazla güvenlik yaması veya başka iyileştirmeler yayınlanmayacak.[50][51] Python 2'ler ile hayatın sonu, yalnızca Python 3.6.x[52] ve sonrası desteklenmektedir.

Tasarım felsefesi ve özellikleri

Python bir çok paradigmalı programlama dili. Nesne yönelimli programlama ve yapısal programlama tam olarak desteklenir ve özelliklerinin çoğu desteklenir fonksiyonel programlama ve bakış açısına yönelik programlama (dahil metaprogramlama[53] ve meta nesneler (sihirli yöntemler)).[54] Diğer birçok paradigma, uzantılar aracılığıyla desteklenir. sözleşme ile tasarım[55][56] ve mantık programlama.[57]

Python kullanır dinamik yazım ve bir kombinasyonu referans sayma ve döngü algılayıcı çöp toplayıcı hafıza yönetimi.[58] Ayrıca dinamik özelliklere sahiptir Ad çözümlemesi (geç bağlama ), programın yürütülmesi sırasında yöntem ve değişken adlarını bağlayan.

Python'un tasarımı aşağıdakiler için biraz destek sunar: fonksiyonel programlama içinde Lisp gelenek. Var filtre, harita, ve azaltmak fonksiyonlar; liste anlayışları, sözlükler, setler ve jeneratör ifade.[59] Standart kitaplık, ödünç alınan işlevsel araçları uygulayan iki modüle (itertools ve functools) sahiptir. Haskell ve Standart ML.[60]

Dilin temel felsefesi belgede özetlenmiştir Python Zen (PEP 20), içerir aforizmalar gibi:[61]

  • Güzel, çirkin olmaktan iyidir.
  • Açık, örtük olmaktan daha iyidir.
  • Basit, karmaşıktan daha iyidir.
  • Karmaşık, karmaşık olmaktan daha iyidir.
  • Okunabilirlik önemlidir.

Python, tüm işlevlerini çekirdeğinde yerleşik olarak bulundurmak yerine, genişletilebilir. Bu kompakt modülerlik, mevcut uygulamalara programlanabilir arayüzler eklemenin bir yolu olarak onu özellikle popüler hale getirmiştir. Van Rossum'un geniş bir standart kitaplığa ve kolayca genişletilebilir bir tercümana sahip küçük bir çekirdek dil vizyonu, ABC, bu tam tersi yaklaşımı benimsedi.[35]

Python, geliştiricilere kodlama metodolojilerinde bir seçenek sunarken daha basit, daha az dağınık bir sözdizimi ve dilbilgisi için çabalar. Kıyasla Perl 's "bunu yapmanın birden fazla yolu var "sloganı, Python," bunu yapmanın bir tek ve tercihen sadece bir tane açık yolu olmalıdır "tasarım felsefesini benimser.[61] Alex Martelli, bir Dost -de Python Yazılım Vakfı ve Python kitap yazarı, "Bir şeyi 'zeki' olarak tanımlamak, değil Python kültüründe bir iltifat olarak kabul edildi. "[62]

Python'un geliştiricileri kaçınmaya çalışıyor erken optimizasyon ve kritik olmayan bölümlerine yamaları reddedin CPython Netlik pahasına hızda marjinal artışlar sağlayacak referans uygulaması.[63] 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 PyPy, bir tam zamanında derleyici. Cython bir Python komut dosyasını C'ye çeviren ve Python yorumlayıcısına doğrudan C düzeyinde API çağrıları yapan da mevcuttur.

Python geliştiricilerinin önemli bir amacı, kullanımı eğlenceli tutmaktır. Bu, İngiliz komedi grubuna bir övgü olan dilin adına da yansımıştır Monty Python[64]—Ve ara sıra, spam ve yumurtalara atıfta bulunan örnekler gibi öğreticilere ve referans materyallerine yönelik eğlenceli yaklaşımlarda (bir ünlü Monty Python çizimi ) standart yerine foo ve bar.[65][66]

Ortak neolojizm Python topluluğunda pitonikprogram stili ile ilgili çok çeşitli anlamlara sahip olabilir. Kodun pitonik olduğunu söylemek, Python deyimlerini iyi kullandığını, doğal olduğunu veya dilde akıcılık gösterdiğini, Python'un minimalist felsefesine uygun olduğunu ve okunabilirliğe vurgu yaptığını söylemektir. Buna karşılık, anlaşılması zor olan veya başka bir programlama dilinden kaba bir transkripsiyon gibi okunan koda ruhani olmayan.

Python kullanıcıları ve hayranları, özellikle bilgili veya deneyimli kabul edilenler, genellikle şu şekilde anılır: Pythonistalar.[67][68]

Sözdizimi ve anlambilim

Python, kolayca okunabilen bir dildir. Biçimi görsel olarak derli topludur ve genellikle diğer dillerin noktalama işaretlerini kullandığı İngilizce anahtar kelimeleri kullanır. Diğer birçok dilden farklı olarak, kullanmaz küme parantezleri blokları sınırlamak için ve ifadelerden sonra noktalı virgül isteğe bağlıdır. Şundan daha az sözdizimsel istisnaya ve özel durumlara sahiptir. C veya Pascal.[69]

Girinti

Python kullanır Beyaz boşluk yerine girinti küme parantezleri veya anahtar kelimeler, sınırlamak için bloklar. Girintide artış, belirli ifadelerden sonra gelir; girintideki bir azalma mevcut bloğun sonunu belirtir.[70] Böylece programın görsel yapısı, programın anlamsal yapısını doğru bir şekilde temsil eder.[1] Bu özellik bazen off-side kuralı, diğer bazı dillerin paylaştığı, ancak çoğu dilde girintinin herhangi bir anlamsal anlamı yoktur.

İfadeler ve kontrol akışı

Python'un ifadeler şunları içerir (diğerleri arasında):

  • Atama ifadesi (simge '=', eşittir işareti). Bu, geleneksel olandan farklı çalışır zorunlu programlama diller ve bu temel mekanizma (Python sürümünün doğası dahil) değişkenler) dilin diğer birçok özelliğini aydınlatır. Ödev C, Örneğin., x = 2, "yazılan değişken adı" na çevirir x 2 "sayısal değerinin bir kopyasını alır. (Sağ taraftaki) değer bir tahsis edilmiş depolama yeri bunun için (sol el) değişken ismi sembolik adres. Değişkene ayrılan bellek, bildirilen öğe için yeterince büyük (potansiyel olarak oldukça büyük) tip. En basit Python ataması durumunda, aynı örneği kullanarak, x = 2, "(genel) adına çevirir x bir alır referans ayrı, dinamik olarak tahsis edilmiş nesne değer 2'nin sayısal (int) türü. "Buna bağlayıcı nesnenin adı. Adın saklama konumu içeren belirtilen değer, buna a demek yanlış değişken. İsimler daha sonra herhangi bir zamanda dizeler, prosedürler, veri içeren karmaşık nesneler ve yöntemler vb. Dahil olmak üzere çok çeşitli türlerdeki nesnelere geri dönebilir. Ortak bir değerin birden çok isme art arda atanması, x = 2; y = 2; z = 2 depolamanın (en fazla) üç ad ve bir sayısal nesneye tahsis edilmesiyle sonuçlanır, üç adın da bağlı olduğu. Bir isim genel bir referans sahibi olduğu için, sabit bir referans sahibini ilişkilendirmek mantıksızdır. veri tipi Bununla. Ancak belirli bir zamanda, bir ad bağlı olacaktır biraz nesne, hangi niyet bir türe sahip olmak; böylece var dinamik yazım.
  • Eğer bir kod bloğunu koşullu olarak yürüten deyim ile birlikte Başka ve elif (else-if'in bir daralması).
  • için yinelenebilir bir nesne üzerinde yinelenen, her bir öğeyi ekli blok tarafından kullanılmak üzere yerel bir değişkene yakalayan ifade.
  • süre koşulu doğru olduğu sürece bir kod bloğunu yürüten deyim.
  • Deneyin ekli kod bloğunda ortaya çıkan istisnaların yakalanmasına ve ele alınmasına izin veren ifade dışında maddeleri; aynı zamanda temizleme kodunu bir en sonunda blok, bloğun nasıl çıktığına bakılmaksızın her zaman çalıştırılacaktır.
  • yükseltmek ifade, belirtilen bir istisnayı veya yakalanan bir istisnayı yeniden gündeme getirmek için kullanılır.
  • sınıf bir kod bloğunu yürüten ve yerel ad alanını bir sınıf, kullanmak için nesne yönelimli programlama.
  • def bir tanımlayan ifade işlevi veya yöntem.
  • ile Eylül 2006'da yayınlanan Python 2.5'ten gelen bildiri,[71] bir bağlam yöneticisi içinde bir kod bloğu içeren (örneğin, bir kilit kod bloğu çalıştırılmadan ve daha sonra kilidi serbest bırakmadan veya bir dosya ve sonra kapatarak) Kaynak Edinimi Başlatmadır (RAII) benzeri davranış ve yaygın bir dene / nihayet deyiminin yerini alır.[72]
  • kırmak deyimi, döngüden çıkar.
  • devam et ifadesi, bu yinelemeyi atlar ve bir sonraki öğeyle devam eder.
  • geçmek olarak hizmet eden ifade HAYIR. Sözdizimsel olarak boş bir kod bloğu oluşturmak gerekir.
  • iddia etmek ifadesi, hata ayıklama sırasında uygulanması gereken koşulları kontrol etmek için kullanılır.
  • Yol ver bir değerden bir değer döndüren ifade jeneratör işlevi. Python 2.5'ten, Yol ver aynı zamanda bir operatördür. Bu form uygulamak için kullanılır Coroutines.
  • dönüş ifade, bir işlevden bir değer döndürmek için kullanılır.
  • ithalat Fonksiyonları veya değişkenleri mevcut programda kullanılabilen modülleri içe aktarmak için kullanılan deyim. Kullanmanın üç yolu vardır ithalat: ithalat <modül isim> [gibi <takma ad>] veya itibaren <modül isim> ithalat * veya itibaren <modül isim> ithalat <tanım 1> [gibi <takma ad 1>], <tanım 2> [gibi <takma ad 2>], ....
  • Yazdır ifadesi şu şekilde değiştirildi Yazdır() Python 3'te işlev.

Python desteklemiyor kuyruk çağrısı optimizasyon veya birinci sınıf devamlar ve Guido van Rossum'a göre asla olmayacak.[73][74] Ancak, daha iyi destek Coroutine Python'un genişlemesiyle benzer işlevsellik 2.5'te sağlanır. jeneratörler.[75] 2.5'ten önce, jeneratörler tembel yineleyiciler; bilgi, jeneratörden tek yönlü olarak geçirildi. Python 2.5'ten, bilgileri bir jeneratör işlevine geri aktarmak mümkündür ve Python 3.3'ten bilgi birden çok yığın düzeyinden geçirilebilir.[76]

İfade

Biraz Python ifade gibi dillere benzer C ve Java bazıları değilken:

  • Toplama, çıkarma ve çarpma aynıdır, ancak bölme davranışı farklıdır. Python'da iki tür bölüm vardır. Kat bölümü (veya tam sayı bölümü) // ve kayan nokta/bölünme.[77] Python ayrıca ** üs alma operatörü.
  • Python 3.5'ten yeni @ infix operatörü tanıtıldı. Gibi kütüphaneler tarafından kullanılması amaçlanmıştır. Dizi için matris çarpımı.[78][79]
  • Python 3.8'den sözdizimi :=, adı 'mors operatörü' tanıtıldı. Daha büyük bir ifadenin parçası olarak değişkenlere değerler atar.[80]
  • Python'da, == sayısalları değere göre karşılaştıran Java ile değere göre karşılaştırır[81] ve referansa göre nesneler.[82] (Java'da nesneler üzerinde değer karşılaştırmaları, eşittir () yöntemi.) Python'un dır-dir operatör, nesne kimliklerini karşılaştırmak için kullanılabilir (referansla karşılaştırma). Python'da karşılaştırmalar zincirlenebilir, örneğin a <= b <= c.
  • Python şu kelimeleri kullanır ve, veya, değil sembolik yerine boole operatörleri için &&, ||, ! Java ve C'de kullanılır.
  • Python, a adı verilen bir ifade türüne sahiptir. liste anlama. Python 2.4 genişletilmiş liste anlayışlarını daha genel bir ifadeye dönüştürür. jeneratör ifade.[59]
  • Anonim işlevler kullanılarak uygulanır lambda ifadeleri; ancak bunlar sınırlıdır, çünkü vücut sadece bir ifade olabilir.
  • Python'daki koşullu ifadeler şu şekilde yazılır: x eğer c ise y[83] (işlenen sırasına göre farklı c? x: y diğer birçok dilde ortak olan operatör).
  • Python, aşağıdakiler arasında bir ayrım yapar: listeler ve demetler. Listeler şöyle yazılır [1, 2, 3], değiştirilebilir ve sözlüklerin anahtarları olarak kullanılamaz (sözlük anahtarları değişmez Python'da). Tuples şu şekilde yazılır (1, 2, 3), değişmezdir ve bu nedenle, dizinin tüm öğelerinin değişmez olması koşuluyla, sözlüklerin anahtarları olarak kullanılabilir. + operatörü, iki demeti birleştirmek için kullanılabilir; bu, içeriklerini doğrudan değiştirmez, bunun yerine sağlanan her iki tuple öğelerini içeren yeni bir demet oluşturur. Böylece değişken verildiğinde t başlangıçta eşit (1, 2, 3), yürütülüyor t = t + (4, 5) ilk değerlendirir t + (4, 5), veren (1, 2, 3, 4, 5)sonra geri atanır t, böylece etkin bir şekilde "içeriğini değiştirmek" t, tuple nesnelerinin değişmez doğasına uyarken. Parantezler, belirsiz olmayan bağlamlardaki tuplelar için isteğe bağlıdır.[84]
  • Python özellikleri sıralı ambalajdan çıkarma burada her biri atanabilecek herhangi bir şeyi değerlendiren birden çok ifade (bir değişken, yazılabilir bir özellik, vb.), demet değişmezlerini oluşturanla aynı şekilde ilişkilendirilir ve bir bütün olarak sol tarafa konur bir atama ifadesindeki eşittir işaretinin. Açıklama bir tekrarlanabilir Eşittir işaretinin sağ tarafındaki nesne, yinelendiğinde sağlanan yazılabilir ifadelerle aynı sayıda değer üretir ve üzerinde yinelenir, üretilen değerlerin her birini soldaki karşılık gelen ifadeye atar.[85]
  • Python'da "dize biçimi" operatörü vardır %. Bu, benzer şekilde çalışır printf dizeleri biçimlendir C, Örneğin. "spam =% s yumurta =% d" % ("blah", 2) değerlendirir "spam = blah egg = 2". Python 3 ve 2.6+ sürümlerinde bu, biçim() yöntemi str sınıf, ör. "spam ={0} yumurta ={1}".biçim("blah", 2). Python 3.6 "f dizeleri" ekledi: falan = "blah"; yumurtalar = 2; f'spam ={falan} yumurta ={yumurtalar}'.[86]
  • Python'daki dizeler olabilir sıralı, onları "ekleyerek" (tamsayılar ve kayan sayılar eklemeyle aynı operatör). Örneğin. ‹Code› yazdır ('spam' + 'yumurtalar'), ‹code› spameggs verir. Dizeleriniz sayı içerse bile, tamsayılar yerine yine de dizeler olarak eklenirler. ‹Code› yazdır ("2" + "2"), ‹code› 22 ‹/code› verir.
  • Python'da çeşitli dize değişmezleri:
    • Tek veya çift tırnak işaretleriyle ayrılmış dizeler. Aksine Unix kabukları, Perl ve Perl'den etkilenen diller, tek tırnak işaretleri ve çift tırnak işaretleri aynı şekilde çalışır. Her iki tür dize de ters eğik çizgiyi kullanır (\) olarak kaçış karakteri. Dize enterpolasyonu Python 3.6'da "biçimlendirilmiş dizgi değişmezleri" olarak kullanıma sunuldu.[86]
    • Üç tekli veya çift tırnak işaretiyle başlayan ve biten üç tırnaklı dizeler. Birden çok satıra yayılabilirler ve şu şekilde işlev görebilirler burada belgeler kabuklarda, Perl ve Yakut.
    • Ham dize dize değişmezinin önekine bir r. Kaçış dizileri yorumlanmaz; dolayısıyla ham dizeler, değişmez ters eğik çizgilerin yaygın olduğu yerlerde kullanışlıdır, örneğin düzenli ifadeler ve pencereler tarzı yollar. Karşılaştırmak "@-çinde "alıntı" C #.
  • Python'da dizi indeksi ve dizi dilimleme listelerdeki ifadeler, şu şekilde gösterilir: anahtar], a [başlangıç: durdur] veya a [başlangıç: durdurma: adım]. Dizinler sıfır tabanlı ve negatif dizinler sona göredir. Dilimler, Başlat dizine kadar, ancak dahil değil Dur indeks. Üçüncü dilim parametresi adım veya uzun adım, öğelerin atlanmasına ve tersine çevrilmesine izin verir. Dilim indeksleri atlanabilir, örneğin a [:] tüm listenin bir kopyasını döndürür. Bir dilimin her bir öğesi bir sığ kopya.

Python'da, ifadeler ve ifadeler arasındaki ayrım, aşağıdaki gibi dillerin aksine katı bir şekilde uygulanır. Ortak Lisp, Şema veya Yakut. Bu, bazı işlevlerin kopyalanmasına yol açar. Örneğin:

  • Anlayışları listeleyin vs. içindöngüleri
  • Koşullu ifadeler vs. Eğer bloklar
  • eval () vs. exec () yerleşik işlevler (Python 2'de, exec bir ifadedir); ilki ifadeler için, ikincisi ifadeler içindir.

İfadeler bir ifadenin parçası olamaz, bu nedenle liste ve diğer anlayışlar veya lambda ifadeleri tüm ifadeler olan ifadeler içeremez. Bunun özel bir durumu, aşağıdaki gibi bir atama ifadesidir: a = 1 bir koşullu ifadenin koşullu ifadesinin bir parçasını oluşturamaz. Bu, bir atama operatörünü yanlış yapmaktan kaynaklanan klasik bir C hatasını önleme avantajına sahiptir. = eşitlik operatörü için == koşullarda: eğer (c = 1) {...} sözdizimsel olarak geçerli (ancak muhtemelen istenmeyen) C kodudur, ancak eğer c = 1: ... Python'da sözdizimi hatasına neden olur.

Yöntemler

Yöntemler nesnelerde fonksiyonlar nesnenin sınıfına eklenir; sözdizimi instance.method (bağımsız değişken) normal yöntemler ve işlevler için Sözdizimsel şeker için Class.method (örnek, bağımsız değişken). Python yöntemlerinin açık bir kendini erişim parametresi örnek verileri örtük olanın aksine kendini (veya bu) diğer bazı nesne yönelimli programlama dillerinde (ör. C ++, Java, Amaç-C veya Yakut ).[87]

Yazıyor

Python 3'teki standart tür hiyerarşisi

Python kullanır ördek yazarak ve nesneler yazdı ancak değişken adları yazılmamış. Tür kısıtlamaları şu adreste kontrol edilmez: Derleme zamanı; daha ziyade, bir nesne üzerindeki işlemler başarısız olabilir ve verilen nesnenin uygun türde olmadığını gösterir. Olmasına rağmen dinamik olarak yazılmış, Python şiddetle yazılmış, sessizce anlamlandırmaya çalışmak yerine, iyi tanımlanmamış (örneğin, bir dizeye bir sayı ekleme) yasaklama işlemleri.

Python, programcıların kendi türlerini kullanarak sınıflar, en sık kullanılanlar nesne yönelimli programlama. Yeni örnekler sınıflar, sınıf çağrılarak oluşturulur (örneğin, SpamClass () veya Yumurta Sınıfı ()) ve sınıflar, metasınıf tip (kendisi kendisinin bir örneğidir) metaprogramlama ve yansıma.

3.0 sürümünden önce, Python iki tür sınıfa sahipti: eski tarz ve yeni stil.[88] Her iki stilin sözdizimi aynıdır, fark, sınıfın nesne doğrudan veya dolaylı olarak miras alınır (tüm yeni stil sınıfları nesne ve örnekleridir tip). Python 2'nin Python 2.2'den sonraki sürümlerinde, her iki sınıf türü de kullanılabilir. Python 3.0'da eski tarz sınıflar kaldırıldı.

Uzun vadeli plan desteklemektir kademeli yazma[89] ve Python 3.5'ten dilin sözdizimi statik türlerin belirlenmesine izin verir, ancak bunlar varsayılan uygulama olan CPython'da kontrol edilmez. Adlandırılmış deneysel bir isteğe bağlı statik tür denetleyicisi mypy derleme zamanı tür denetimini destekler.[90]

Python 3'ün yerleşik türlerinin özeti
TürDeğişkenlikAçıklamaSözdizimi örnekleri
booldeğişmezBoole değeriDoğru
Yanlış
bytearraydeğişebilirDizisi baytbytearray(b'Bazı ASCII')
bytearray(b"Bazı ASCII")
bytearray([119, 105, 107, 105])
baytdeğişmezBayt dizisib'Bazı ASCII'
b"Bazı ASCII"
bayt([119, 105, 107, 105])
karmaşıkdeğişmezKarmaşık sayı gerçek ve hayali parçalarla3+2.7j
dikte etmekdeğişebilirİlişkisel dizi (veya anahtar ve değer çiftlerinin sözlüğü); karma türler (anahtarlar ve değerler) içerebilir, anahtarlar karma bir tür olmalıdır{"anahtar1": 1.0, 3: Yanlış}
{}
üç noktaadeğişmezBir üç nokta dizin olarak kullanılacak yer tutucu Dizi diziler...
Elipsis
yüzerdeğişmezÇift hassasiyet kayan nokta numara. Kesinlik makineye bağlıdır, ancak pratikte genellikle 64 bit olarak uygulanır IEEE 754 53 bit hassasiyetle sayı[91]

1.414

FrozensetdeğişmezSırasız Ayarlamak, hiçbir kopya içermez; karma türler içerebilir, eğer hashable iseFrozenset([4.0, 'string', Doğru])
intdeğişmezTamsayı sınırsız büyüklükte[92]42
listedeğişebilirListe, karışık türler içerebilir[4.0, 'string', Doğru]
[]
HiçbiriadeğişmezBir değerin yokluğunu temsil eden, genellikle adı verilen bir nesne boş diğer dillerdeYok
NotImplementedTypeadeğişmezGeri döndürülebilecek bir yer tutucu aşırı yüklenmiş operatörler desteklenmeyen işlenen türlerini belirtmek için.Uygulanmadı
AralıkdeğişmezYaygın olarak belirli sayıda döngü yapmak için kullanılan bir sayı dizisi için döngüler[93]Aralık(1, 10)
Aralık(10, -5, -2)
AyarlamakdeğişebilirSırasız Ayarlamak, hiçbir kopya içermez; karma türler içerebilir, eğer hashable ise{4.0, 'string', Doğru}
Ayarlamak()
strdeğişmezBir karakter dizesi: Unicode kod noktaları dizisi'Wikipedia'
"Wikipedia"
"" "Kapsamaçoklusatırlar "" "
demetdeğişmezKarışık türler içerebilir(4.0, 'string', Doğru)
("tek eleman",)
()

^ a İsimle doğrudan erişilebilir değil

Aritmetik işlemler

Python, aritmetik operatörler için genel sembollere sahiptir (+, -, *, /), kat bölümü operatörü // ve modulo işlemi % (geri kalan kısım negatif olabilir, ör. 4 % -3 == -2). Ayrıca .... sahip ** için üs alma, Örneğin. 5**3 == 125 ve 9**0.5 == 3.0ve bir matris çarpma operatörü @ .[94] Bu operatörler geleneksel matematikte olduğu gibi çalışır; aynısı ile öncelik kuralları operatörler infix ( + ve - Ayrıca olabilir birli sırasıyla pozitif ve negatif sayıları temsil etmek için).

Tamsayılar arasındaki bölme, kayan nokta sonuçları üretir. Bölünme davranışı zaman içinde önemli ölçüde değişti:[95]

  • Python 2.1 ve öncesi, C'nin bölme davranışını kullandı. / işleci, her iki işlenen de tamsayı ise tamsayı bölümü, aksi takdirde kayan nokta bölümüdür. Tamsayı bölme 0'a doğru yuvarlanır, ör. 7/3 == 2 ve -7/3 == -2.
  • Python 2.2, tamsayı bölmesini negatif sonsuza yuvarlamak için değiştirdi, ör. 7/3 == 2 ve -7/3 == -3. Kat bölümü // operatör tanıtıldı. Yani 7//3 == 2, -7//3 == -3, 7.5//3 == 2.0 ve -7.5//3 == -3.0. Ekleme itibaren __ gelecek__ ithalat bölünme bir modülün bölme için Python 3.0 kurallarını kullanmasına neden olur (sonraki bölüme bakın).
  • Python 3.0 değiştirildi / her zaman kayan nokta bölümü olmak, ör. 5/2 == 2.5.

Python terimleriyle, / dır-dir gerçek bölüm (ya da sadece bölünme), ve // dır-dir kat bölümü. / 3.0 sürümünden önce klasik bölüm.[95]

Negatif sonsuzluğa yuvarlama, çoğu dilden farklı olsa da tutarlılık sağlar. Örneğin, denklemin (a + b)//b == a//b + 1 her zaman doğrudur. Aynı zamanda denklemin b*(a//b) + a%b == a hem pozitif hem de negatif değerleri için geçerlidir a. Bununla birlikte, bu denklemin geçerliliğini korumak, sonucun a% b beklendiği gibi yarı açık aralık [0, b), nerede b pozitif bir tam sayıdır, aralık içinde yer almalıdır (b, 0] ne zaman b negatiftir.[96]

Python, yuvarlak işlevi yuvarlama en yakın tam sayıya bir float. İçin kravat bozma Python 3, eşit: yuvarlak (1.5) ve yuvarlak (2.5) ikisi de üretir 2.[97] 3 kullanılmadan önceki sürümler sıfırdan yuvarlama: yuvarlak (0.5) dır-dir 1.0, yuvarlak (-0,5) dır-dir −1.0.[98]

Python, matematikte genel kullanımla tutarlı bir şekilde birden çok eşitlik ilişkisine sahip boole ifadelerine izin verir. Örneğin, ifade a olup olmadığını test eder a daha az b ve b daha az c.[99] C'den türetilmiş diller bu ifadeyi farklı şekilde yorumlar: C'de, ifade önce değerlendirilir a 0 veya 1 ile sonuçlanır ve bu sonuç daha sonra ile karşılaştırılır c.[100]

Python kullanır keyfi kesinlikte aritmetik tüm tamsayı işlemleri için. Ondalık yazın / sınıf ondalık modülü, önceden tanımlanmış rasgele bir hassasiyete ve birkaç yuvarlama moduna ondalık kayan nokta sayıları sağlar.[101] Kesir sınıf kesirler modül için keyfi bir hassasiyet sağlar rasyonel sayılar.[102]

Python'un kapsamlı matematik kitaplığı ve üçüncü taraf kitaplığı sayesinde Dizi Bu, yerel yetenekleri daha da genişleterek, sayısal veri işleme ve manipülasyon gibi sorunlara yardımcı olmak için sıklıkla bilimsel bir betik dili olarak kullanılır.[103][104]

Programlama örnekleri

Selam Dünya program:

Yazdır('Selam Dünya!')

Hesaplama programı faktöryel pozitif bir tamsayı:

n = int(giriş('Bir sayı yazın ve faktöriyeli yazdırılacaktır:'))Eğer n < 0:    yükseltmek Değer Hatası("Negatif olmayan bir tam sayı girmelisiniz")gerçek = 1için ben içinde Aralık(2, n + 1):    gerçek *= benYazdır(gerçek)

Kitaplıklar

Python'un büyük standart kitaplık, genellikle en güçlü yönlerinden biri olarak anılan,[105] birçok göreve uygun araçlar sağlar. İnternete yönelik uygulamalar için, birçok standart format ve protokol, örneğin MIME ve HTTP Desteklenmektedir. Oluşturmak için modüller içerir grafik kullanıcı arayüzleri, bağlanıyor ilişkisel veritabanları, sözde rasgele sayılar oluşturma, rasgele kesinlikte ondalık sayılarla aritmetik,[106] manipüle etme düzenli ifadeler, ve birim testi.

Standart kitaplığın bazı bölümleri teknik özellikler kapsamındadır (örneğin, Web Sunucusu Ağ Geçidi Arayüzü (WSGI) uygulaması Wsgiref PEP 333'ü takip eder[107]), ancak çoğu modül değildir. Kodları, dahili belgeleri ve test paketleri. Bununla birlikte, standart kitaplığın çoğu platformlar arası Python kodu olduğundan, yalnızca birkaç modülün varyant uygulamaları için değiştirilmesi veya yeniden yazılması gerekir.

Kasım 2019 itibarıyla, Python Paket Dizini Üçüncü taraf Python yazılımı için resmi depo olan (PyPI), 200.000'den fazla[108] aşağıdakileri içeren geniş bir işlevsellik yelpazesine sahip paketler:

Geliştirme ortamları

Çoğu Python uygulaması (CPython dahil) bir okuma-değerlendirme-yazdırma döngüsü (REPL), bunların bir komut satırı yorumlayıcısı bunun için kullanıcı ifadeleri sırayla girer ve sonuçları hemen alır.

Dahil olmak üzere diğer mermiler BOŞTA ve IPython, gelişmiş otomatik tamamlama, oturum durumu saklama gibi başka özellikler ekleyin ve sözdizimi vurgulama.

Standart masaüstünün yanı sıra entegre geliştirme ortamları, var internet tarayıcısı tabanlı IDE'ler; SageMath (bilim ve matematikle ilgili Python programları geliştirmek için tasarlanmıştır); PythonAnywhere, tarayıcı tabanlı bir IDE ve barındırma ortamı; ve Canopy IDE, ticari bir Python IDE bilimsel hesaplama.[110]

Uygulamalar

Referans uygulaması

CPython ... referans uygulaması Python. Yazılmıştır C buluşmak C89 birkaç seçim ile standart C99 özellikleri.[111] Python programlarını bir ara seviyeye derler bayt kodu[112] daha sonra onun tarafından yürütülür sanal makine.[113] CPython, C ve yerel Python karışımı ile yazılmış büyük bir standart kitaplıkla dağıtılmıştır. Aşağıdakiler dahil birçok platform için mevcuttur: pencereler (Python 3.9.1 sürümünden beri, Python " Windows 7 ";[114] ve destekledim Windows XP ve daha eski, şu anda desteklenmeyen Python 2.7) ve en modern Unix benzeri macOS dahil sistemler (ve Apple M1 Mac'ler, Python 3.9.1'den beri, deneysel yükleyiciyle) ve ör. VMS.[115] Platform taşınabilirliği, en eski önceliklerinden biriydi,[116] Python 1 ve 2 zaman diliminde OS / 2 ve Solaris;[117] o zamandan beri birçok platform için destek kesildi.

Diğer uygulamalar

PyPy Python 2.7 ve 3.6'nın hızlı ve uyumlu bir yorumlayıcısıdır.[118] Onun tam zamanında derleyici CPython'a göre önemli bir hız artışı getirir, ancak C ile yazılmış birkaç kitaplık onunla kullanılamaz.[119][120]

Yığınsız Python uygulayan önemli bir CPython çatalı mikro iplikler; C bellek yığınını kullanmaz, böylece büyük ölçüde eşzamanlı programlara izin verir. PyPy'nin yığınsız bir sürümü de vardır.[121]

MicroPython ve CircuitPython Python 3 varyantları için optimize edilmiştir mikrodenetleyiciler. Bu içerir Lego Mindstorms EV3.[122]

Desteklenmeyen uygulamalar

Diğer tam zamanlı Python derleyicileri geliştirildi, ancak artık desteklenmiyorlar:

  • Google adlı bir proje başlattı Yüksüz Kırlangıç 2009'da, Python yorumlayıcısını beş kat hızlandırmak amacıyla LLVM ve çoklu okuma yeteneğini binlerce çekirdeğe ölçekleme yeteneğini geliştirerek,[123] sıradan uygulamalar zarar görürken genel yorumlayıcı kilidi.
  • Psyco bir tam zamanında uzmanlaşan CPython ile entegre olan ve çalışma zamanında bayt kodunu makine koduna dönüştüren derleyici. Yayılan kod, belirli veri tipleri ve standart Python kodundan daha hızlıdır.

2005 yılında Nokia için bir Python yorumlayıcısı yayınladı 60 Serisi isimli cep telefonları PyS60. CPython uygulamalarından birçok modülü ve entegre etmek için bazı ek modülleri içerir. Symbian işletim sistemi. Proje, S60 platformunun tüm varyantlarında çalışacak şekilde güncel tutulmuştur ve çeşitli üçüncü taraf modülleri mevcuttur. Nokia N900 Python'u da destekler GTK widget kitaplıkları, programların hedef cihaz üzerinde yazılmasını ve çalıştırılmasını sağlar.[124]

Diğer dillere çapraz derleyiciler

Yüksek seviyeli birkaç derleyici var nesne dilleri, ya kısıtlanmamış Python, kısıtlı bir Python alt kümesi veya kaynak dil olarak Python'a benzer bir dil ile:

  • Cython Python'u derler C ve C ++.
  • Google'ın Grumpy (2017'deki en son sürümü), Python 2'yi Git.[125][126]
  • IronPython .NET üzerinde Python programlarını çalıştırmak için benzer bir yaklaşım izler. Ortak dil çalışması.
  • Jython Java sınıf kitaplığının bir Python programından kullanılmasını sağlar.
  • MyHDL Python'u derler VHDL.
  • Nuitka Python'u C ++ 'a derler.[127]
  • Numba kullanır LLVM Python'u makine koduna derlemek için.
  • Pyjs (2012'deki en son sürüm) Python'u şu şekilde derler: JavaScript.
  • Pyrex (son sürüm 2010) ve Cildi döken (en son sürüm 2013) sırasıyla C ve C ++ 'a derlenir.
  • Pythran, Python'u C ++.[128][129]
  • RPython derlenebilir C ve Python'un PyPy yorumlayıcısını oluşturmak için kullanılır.

Verim

Sayısal olmayan (kombinatoryal) bir iş yükünde çeşitli Python uygulamalarının performans karşılaştırması EuroSciPy '13'te sunuldu.[130] Python'un diğer programlama dillerine kıyasla performansı da şu şekilde değerlendirildi: Bilgisayar Dili Benchmark Oyunu.[131]

Geliştirme

Python'un gelişimi büyük ölçüde Python Geliştirme Önerisi (PEP) süreci, önemli yeni özellikler önermek, sorunlar hakkında topluluk girdisi toplamak ve Python tasarım kararlarını belgelemek için birincil mekanizma.[132] Python kodlama stili PEP 8'de ele alınmıştır.[133] Üstün PEP'ler Python topluluğu ve yürütme kurulu tarafından incelenir ve yorumlanır.[132]

Dilin geliştirilmesi, CPython referans uygulamasının geliştirilmesine karşılık gelir. Posta listesi python-dev, dilin gelişimi için birincil forumdur. Belirli konular şu bölümde tartışılmaktadır: Hesabı yuvarlamak hata izleyici barındırılan bugs.python.org.[134] Geliştirme başlangıçta bir kendi kendine barındırılan kaynak kod deposu çalışıyor Mercurial Python, GitHub Ocak 2017'de.[135]

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 yapılması gereken geriye dönük uyumsuz sürümler taşınan. Sürüm numarasının ilk bölümü artırılır. Bu sürümler nadiren gerçekleşir - örneğin 3.0 sürümü, 2.0'dan 8 yıl sonra yayınlandı.
  • Yaklaşık 18 ayda bir ana veya "özellik" sürümleri büyük ölçüde uyumludur ancak yeni özellikler sunar. Sürüm numarasının ikinci kısmı artırılır. Her ana sürüm, yayınlandıktan sonra birkaç yıl boyunca hata düzeltmeleriyle desteklenir.[136]
  • Bugfix sürümleri,[137] Yeni özellik sunmayan, yaklaşık 3 ayda bir ortaya çıkan 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 eklenmiştir. Sürüm numarasının üçüncü ve son kısmı artırılır.[137]

Python 3.9 alpha1 Kasım 2019'da duyuruldu[138] ve yeni bir yıllık yayın kadansının kabul edilmesiyle,[139][140] 3.9'un ilk sürümünün Kasım 2020'de çıkması planlanıyor.[141]

Birçok alfa, beta ve sürüm adayları ayrıca ön izleme olarak ve son sürümlerden önce test edilmek üzere yayınlanır. Her sürüm için kabataslak bir program olsa da, kod hazır değilse genellikle ertelenir. Python'un geliştirme ekibi, büyük yazılımları çalıştırarak kodun durumunu izler. ünite testi paketi geliştirme sırasında ve BuildBot sürekli entegrasyon sistemi.[142]

Büyük akademik konferans Python'da PyCon. Ayrıca özel Python mentorluk programları da vardır. Pileler.

API dokümantasyon oluşturucuları

Python API dokümantasyon oluşturucuları şunları içerir:

Adlandırma

Python'un adı İngiliz komedi grubundan geliyor Monty Python Python'un yaratıcısı Guido van Rossum'un dili geliştirirken keyif aldığı. Monty Python referansları, Python kodunda ve kültüründe sıklıkla görülür;[143] örneğin, metasentaktik değişkenler Python literatüründe sıklıkla kullanılanlar istenmeyen e ve yumurtalar geleneksel yerine foo ve bar.[143][144] Resmi Python belgeleri ayrıca Monty Python rutinlerine çeşitli referanslar içerir.[145][146]

Önek Py- Python ile ilgili bir şeyin olduğunu göstermek için kullanılır. Python uygulamaları veya kitaplıklarının adlarında bu önekin kullanımına örnekler şunları içerir: Pygame, bir bağlayıcı nın-nin SDL Python'a (genellikle oyun oluşturmak için kullanılır); PyQt ve PyGTK bağlayan Qt ve GTK Python'a sırasıyla; ve PyPy, orijinal olarak Python'da yazılmış bir Python uygulaması.

Kullanımlar

Python, 2003'ten beri sürekli olarak en popüler on programlama dili arasında yer almaktadır. TIOBE Programlama Topluluğu Endeksi nerede, Şubat 2020 itibariyle, üçüncü en popüler dildir (arkasında Java, ve C ).[147] 2007, 2010 ve 2018 yıllarında Yılın Programlama Dili seçilmiştir.[148]

Deneysel bir çalışma, Python gibi komut dosyası yazma dillerinin, dizgi manipülasyonu ve bir sözlükte arama içeren programlama problemleri için C ve Java gibi geleneksel dillerden daha üretken olduğunu buldu ve bellek tüketiminin genellikle "Java'dan daha iyi" olduğunu belirledi. C veya C ++ 'dan çok daha kötü ".[149]

Python kullanan büyük kuruluşlar şunları içerir: Wikipedia, Google,[150] Yahoo!,[151] CERN,[152] NASA,[153] Facebook,[154] Amazon, Instagram,[155] Spotify[156] ve gibi bazı küçük varlıklar ILM[157] ve ITA.[158] Sosyal haber ağı sitesi Reddit tamamen Python ile yazılmıştır.[159]

Python bir komut dosyası dili için Web uygulamaları, ör., aracılığıyla mod_wsgi için Apache web sunucusu.[160] İle Web Sunucusu Ağ Geçidi Arayüzü, bu uygulamaları kolaylaştırmak için standart bir API geliştirildi. Web çerçeveleri sevmek Django, Direkler, Piramit, TurboGears, web2py, Kasırga, Cep şişesi, Şişe ve Zope geliştiricileri karmaşık uygulamaların tasarımı ve bakımı konusunda destekler. Pyjs ve IronPython Ajax tabanlı uygulamaların istemci tarafını geliştirmek için kullanılabilir. SQLAlchemy olarak kullanılabilir veri eşleyici ilişkisel bir veritabanına. Bükülmüş bilgisayarlar arasındaki iletişimi programlamak için bir çerçevedir ve (örneğin) tarafından Dropbox.

Gibi kitaplıklar Dizi, SciPy ve Matplotlib Python'un etkin kullanımına izin ver bilimsel hesaplama,[161][162] gibi özel kütüphaneler ile Biopython ve Astropi alana özgü işlevsellik sağlamak. SageMath bir matematiksel yazılım Birlikte dizüstü bilgisayar arayüzü Python'da programlanabilir: kütüphanesi, matematik, dahil olmak üzere cebir, kombinatorik, sayısal matematik, sayı teorisi, ve hesap.[163] OpenCV zengin özelliklere sahip python bağlamalarına sahiptir. Bilgisayar görüşü ve görüntü işleme.[164]

Python, birçok yazılım ürününe bir komut dosyası dili olarak başarıyla yerleştirilmiştir. sonlu eleman yöntemi gibi yazılımlar Abaqus, 3D parametrik modelleyici gibi FreeCAD Gibi 3B animasyon paketleri 3ds Max, Blender, Cinema 4D, Işık dalgası, Houdini, Maya, modo, MotionBuilder, Softimage, görsel efekt oluşturucu Nuke, Gibi 2D görüntüleme programları GIMP,[165] Inkscape, Scribus ve Paint Shop Pro,[166] ve müzik notasyonu gibi programlar puan yazarı ve kapella. GNU Hata Ayıklayıcı Python'u bir güzel yazıcı C ++ kapsayıcıları gibi karmaşık yapıları göstermek için. Esri Python'u komut dosyası yazmak için en iyi seçenek olarak tanıtır. ArcGIS.[167] Ayrıca birkaç video oyununda da kullanılmıştır,[168][169] ve mevcut üçten ilki olarak kabul edilmiştir Programlama dilleri içinde Google Uygulama Motoru diğer ikisi Java ve Git.[170]

Python yaygın olarak yapay zeka gibi kütüphanelerin yardımıyla projeler ve makine öğrenimi projeleri TensorFlow, Keras, Pytorch ve Scikit-öğrenme.[171][172][173][174] İle bir betik dili olarak modüler mimari, basit sözdizimi ve zengin metin işleme araçları, Python genellikle doğal dil işleme.[175]

Çoğu işletim sistemi Python'u standart bir bileşen olarak içerir. En çok Linux dağıtımları,[176] AmigaOS 4 (Python 2.7 kullanarak), FreeBSD (paket olarak), NetBSD, OpenBSD (paket olarak) ve Mac os işletim sistemi ve komut satırından (terminal) kullanılabilir. Çoğu Linux dağıtımı Python ile yazılmış yükleyicileri kullanır: Ubuntu kullanır Ubiquity yükleyici, while Red Hat Linux ve Fedora kullan Anaconda yükleyici. Gentoo Linux Python'u kendi paket yönetim sistemi, Portage.

Python, bilgi Güvenliği istismar geliştirme dahil endüstri.[177][178]

Çoğu Şeker için yazılım Çocuk Başına Bir Dizüstü Bilgisayar XO, şimdi geliştirildi Şeker Laboratuvarları, Python ile yazılmıştır.[179] Ahududu Pi tek kartlı bilgisayar proje, Python'u ana kullanıcı programlama dili olarak benimsemiştir.

LibreOffice Python içerir ve Java'yı Python ile değiştirmeyi amaçlamaktadır. Python Komut Dosyası Sağlayıcısı temel bir özelliktir[180] Sürüm 4.0, 7 Şubat 2013'ten beri.

Python'dan etkilenen diller

Python'un tasarımı ve felsefesi diğer birçok programlama dilini etkilemiştir:

  • Boo girinti, benzer bir sözdizimi ve benzer bir nesne modeli kullanır.[181]
  • Kobra girinti ve benzer bir sözdizimi kullanır ve Teşekkürler belge, Python'u onu etkileyen diller arasında ilk sırada listeler.[182]
  • CoffeeScript, bir Programlama dili JavaScript'e çapraz derleyen, Python'dan esinlenen sözdizimine sahip.
  • ECMAScript /JavaScript ödünç yineleyiciler ve jeneratörler Python'dan.[183]
  • GDScript, Python'a çok benzer bir komut dosyası dili, yerleşik Godot oyun motoru.[184]
  • Git "Python gibi dinamik bir dilde çalışma hızı" için tasarlanmıştır[185] ve dizileri dilimlemek için aynı sözdizimini paylaşır.
  • Harika Python tasarım felsefesini Java.[186]
  • Julia "Python kadar genel programlama için kullanılabilir" olacak şekilde tasarlanmıştır.[24]
  • Nim girinti ve benzer sözdizimi kullanır.[187]
  • Yakut yaratıcısı, Yukihiro Matsumoto, şöyle dedi: "Perl'den daha güçlü ve Python'dan daha nesne yönelimli bir betik dili istedim. Bu yüzden kendi dilimi tasarlamaya karar verdim."[188]
  • Swift Apple tarafından geliştirilen bir programlama dili olan Python'dan esinlenen bir sözdizimi vardır.[189]

Python'un geliştirme uygulamaları da diğer diller tarafından taklit edilmiştir. Örneğin, dilde bir değişikliğin gerekçesini ve etrafındaki sorunları (Python'da, bir PEP) açıklayan bir belge talep etme uygulaması da Tcl,[190] Erlang,[191] ve Swift.[192]

Ayrıca bakınız

Referanslar

  1. ^ a b Guttag, John V. (12 Ağustos 2016). Python Kullanarak Hesaplama ve Programlamaya Giriş: Verileri Anlamak İçin Uygulama İle. MIT Basın. ISBN  978-0-262-52962-4.
  2. ^ "Python Sürüm Python 3.9.1". Python.org. 7 Aralık 2020. Alındı 8 Aralık 2020.
  3. ^ "Python Sürüm Python 3.10.0a3". Python.org. 7 Aralık 2020. Alındı 8 Aralık 2020.
  4. ^ "PEP 483 - Tip İpuçları Teorisi". Python.org.
  5. ^ Python 3.5'te dosya uzantısı .pyo kaldırılmıştır. Görmek KEP 0488
  6. ^ Holth, Moore (30 Mart 2014). "PEP 0441 - Python ZIP Uygulama Desteği Geliştiriliyor". Alındı 12 Kasım 2015.
  7. ^ "Starlark Dili". Alındı 25 Mayıs 2019.
  8. ^ a b "Python neden ilk başta oluşturuldu?". Genel Python SSS. Python Yazılım Vakfı. Alındı 22 Mart 2007.
  9. ^ "Ada 83 Referans Kılavuzu (ifade yükseltme)".
  10. ^ Kuchling, Andrew M. (22 Aralık 2006). "Guido van Rossum ile röportaj (Temmuz 1998)". amk.ca. Arşivlenen orijinal 1 Mayıs 2007. Alındı 12 Mart 2012.
  11. ^ a b "itertools - Etkili döngü için yineleyiciler oluşturan işlevler - Python 3.7.1 belgeleri". docs.python.org.
  12. ^ van Rossum, Guido (1993). "UNIX / C Programcıları için Python'a Giriş". NLUUG Najaarsconferentie'nin bildirileri (Hollanda UNIX Kullanıcıları Grubu). CiteSeerX  10.1.1.38.2023. C'nin tasarımı ideal olmaktan uzak olsa da, Python üzerindeki etkisi büyüktür.
  13. ^ a b "Sınıflar". Python Eğitimi. Python Yazılım Vakfı. Alındı 20 Şubat 2012. C ++ ve Modula-3'te bulunan sınıf mekanizmalarının bir karışımıdır.
  14. ^ Lundh, Fredrik. "Nesneye Göre Çağrı". effbot.org. Alındı 21 Kasım 2017. "CLU" yu "Python" ile, "kayıt" ı "örnek" ile ve "yordamı" "işlev veya yöntem" ile değiştirin ve Python'un nesne modelinin oldukça doğru bir tanımını elde edersiniz.
  15. ^ Simionato, Michele. "Python 2.3 Yöntem Çözüm Sırası". Python Yazılım Vakfı. Dylan üzerinde çalışan insanlar tarafından icat edildiğinden ve lispers için tasarlanmış bir makalede açıklandığı için C3 yönteminin Python ile hiçbir ilgisi yoktur.
  16. ^ Kuchling, A. M. "Fonksiyonel Programlama NASIL". Python v2.7.2 belgeleri. Python Yazılım Vakfı. Alındı 9 Şubat 2012.
  17. ^ Schemenauer, Neil; Peters, Tim; Hetland, Magnus Lie (18 Mayıs 2001). "PEP 255 - Basit Jeneratörler". Python Geliştirme Önerileri. Python Yazılım Vakfı. Alındı 9 Şubat 2012.
  18. ^ Smith, Kevin D .; Jewett, Jim J .; Montanaro, Atla; Baxter, Anthony (2 Eylül 2004). "PEP 318 - İşlevler ve Yöntemler için Dekoratörler". Python Geliştirme Önerileri. Python Yazılım Vakfı. Alındı 24 Şubat 2012.
  19. ^ "Daha Fazla Kontrol Akışı Aracı". Python 3 belgeleri. Python Yazılım Vakfı. Alındı 24 Temmuz 2015.
  20. ^ "CoffeeScript". coffeescript.org.
  21. ^ "Genie Programlama Dili Eğitimi". Alındı 28 Şubat 2020.
  22. ^ "JavaScript'teki Perl ve Python etkileri". www.2ality.com. 24 Şubat 2013. Alındı 15 Mayıs 2015.
  23. ^ Rauschmayer, Axel. "Bölüm 3: JavaScript'in Doğası; Etkiler". O'Reilly, Konuşan JavaScript. Alındı 15 Mayıs 2015.
  24. ^ a b "Julia'yı Neden Yarattık". Julia web sitesi. 2012 Şubat. Alındı 5 Haziran 2014. Python [...] kadar genel programlama için kullanılabilir bir şey istiyoruz
  25. ^ Ring Team (4 Aralık 2017). "Zil ve diğer diller". ring-lang.net. halka dil.
  26. ^ Bini, Ola (2007). Pratik JRuby on Rails Web 2.0 Projeleri: Ruby on Rails'i Java platformuna getirmek. Berkeley: A Elbise. s.3. ISBN  978-1-59059-881-8.
  27. ^ Lattner, Chris (3 Haziran 2014). "Chris Lattner'ın Ana Sayfası". Chris Lattner. Alındı 3 Haziran 2014. Swift dili, bir dil uzmanları, dokümantasyon uzmanları, derleyici optimizasyon ninjaları ve fikirlerin iyileştirilmesine ve test edilmesine yardımcı olmak için geri bildirim sağlayan inanılmaz derecede önemli bir dahili test sürümü grubunun yorulmak bilmeyen çabalarının ürünüdür. Tabii ki, aynı zamanda bu alandaki diğer birçok dil tarafından zor kazanılan deneyimlerden, Objective-C, Rust, Haskell, Ruby, Python, C #, CLU ve listelenemeyecek kadar çok diğerlerinden fikirlerin alınmasından büyük ölçüde yararlandı.
  28. ^ Kuhlman, Dave. "Bir Python Kitabı: Python'a Başlangıç, Gelişmiş Python ve Python Egzersizleri". Bölüm 1.1. Arşivlenen orijinal (PDF) 23 Haziran 2012.
  29. ^ "Python Hakkında". Python Yazılım Vakfı. Alındı 24 Nisan 2012., ikinci bölüm "Python hayranları, eşzamansız işlemeden zip dosyalarına kadar her şeyi kapsayan standart kitaplığı tanımlamak için" piller dahil "ifadesini kullanır.
  30. ^ Peterson, Benjamin (20 Nisan 2020). "Python Insider: Python 2.7.18, Python 2'nin son sürümü". Python Insider. Alındı 27 Nisan 2020.
  31. ^ "Python Geliştirici Kılavuzu - Python Geliştirici Kılavuzu". devguide.python.org. Alındı 17 Aralık 2019.
  32. ^ "Tarih ve Lisans". Alındı 5 Aralık 2016. "Tüm Python Sürümleri Açık Kaynaklıdır"
  33. ^ https://redmonk.com/sogrady/2020/02/28/language-rankings-1-20/
  34. ^ https://www.wired.com/story/python-language-more-popular-than-ever/
  35. ^ a b Venners, Bill (13 Ocak 2003). "Python Yapımı". Artima Geliştirici. Artima. Alındı 22 Mart 2007.
  36. ^ van Rossum, Guido (29 Ağustos 2000). "SETL (önceden: aralık değişmezleri hakkında ılık)". Python-Dev (Mail listesi). Alındı 13 Mart 2011.
  37. ^ van Rossum, Guido (20 Ocak 2009). "Python'un Kısa Bir Zaman Çizelgesi". Python Tarihi. Alındı 20 Ocak 2009.
  38. ^ Fairchild, Carlie (12 Temmuz 2018). "Guido van Rossum, Python'un Yaşam İçin Yardımsever Diktatörü Rolünden Ayrılıyor". Linux Journal. Alındı 13 Temmuz 2018.
  39. ^ "Guido van Rossum, Python'un Yaşam İçin Yardımsever Diktatörü Rolünden Ayrılıyor | Linux Dergisi". www.linuxjournal.com.
  40. ^ "Python patronu Guido van Rossum 30 yıl sonra istifa etti". The Inquirer.
  41. ^ "PEP 8100". piton. Python Yazılım Vakfı. Alındı 4 Mayıs 2019.
  42. ^ "PEP 8100". Python Yazılım Vakfı. Alındı 4 Mayıs 2019.
  43. ^ https://discuss.python.org/t/steering-council-nomination-guido-van-rossum-2020-term/2657/11. Eksik veya boş | title = (Yardım)
  44. ^ Kuchling, A. M .; Zadka, Moshe (16 Ekim 2000). "Python 2.0'daki Yenilikler". Python Yazılım Vakfı. Alındı 11 Şubat 2012.
  45. ^ "Python 3.0 Sürümü". Python Yazılım Vakfı. Alındı 8 Temmuz 2009.
  46. ^ van Rossum, Guido (5 Nisan 2006). "PEP 3000 - Python 3000". Python Geliştirme Önerileri. Python Yazılım Vakfı. Arşivlenen orijinal 3 Mart 2016 tarihinde. Alındı 27 Haziran 2009.
  47. ^ "Otomatik Python 2 ila 3 kod çevirisi - Python Belgeleri". Alındı 11 Şubat 2018.
  48. ^ "PEP 373 - Python 2.7 Yayın Planı". python.org. Alındı 9 Ocak 2017.
  49. ^ "PEP 466 - Python 2.7.x için Ağ Güvenliği Geliştirmeleri". python.org. Alındı 9 Ocak 2017.
  50. ^ "Python 2 Kullanımdan Kaldırılıyor". Python.org. Alındı 22 Eylül 2019.
  51. ^ "PEP 373 - Python 2.7 Yayın Planı". Python.org. Alındı 22 Eylül 2019.
  52. ^ "Python Geliştirici Kılavuzu - Python Geliştirici Kılavuzu". devguide.python.org. Alındı 17 Aralık 2019.
  53. ^ Cain Gang Ltd. "Python Metasınıfları: Kim? Neden? Ne Zaman?" (PDF). Arşivlenen orijinal (PDF) 30 Mayıs 2009. Alındı 27 Haziran 2009.
  54. ^ "3.3. Özel yöntem adları". Python Dil Referansı. Python Yazılım Vakfı. Alındı 27 Haziran 2009.
  55. ^ "PyDBC: Python için yöntem ön koşulları, yöntem son koşulları ve sınıf değişmezleri". Alındı 24 Eylül 2011.
  56. ^ "Python Sözleşmeleri". Alındı 24 Eylül 2011.
  57. ^ "PyDatalog". Alındı 22 Temmuz 2012.
  58. ^ "Python Yorumlayıcısını Genişletme ve Gömme: Referans Sayıları". Docs.python.org. Alındı 5 Haziran 2020. Python yoğun bir şekilde malloc () ve Bedava(), bellek sızıntılarını ve serbest bellek kullanımını önlemek için bir stratejiye ihtiyacı var. Seçilen yönteme referans sayma.
  59. ^ a b Hettinger, Raymond (30 Ocak 2002). "PEP 289 - Jeneratör İfadeleri". Python Geliştirme Önerileri. Python Yazılım Vakfı. Alındı 19 Şubat 2012.
  60. ^ "6.5 itertools - Etkili döngü için yineleyiciler oluşturan işlevler". Docs.python.org. Alındı 22 Kasım 2016.
  61. ^ a b Peters, Tim (19 Ağustos 2004). "PEP 20 - Python'un Zen'i". Python Geliştirme Önerileri. Python Yazılım Vakfı. Alındı 24 Kasım 2008.
  62. ^ Martelli, Alex; Ravenscroft, Anna; Ascher, David (2005). Python Yemek Kitabı, 2. Baskı. O'Reilly Media. s. 230. ISBN  978-0-596-00797-3.
  63. ^ "Ebeab.com". ebeab.com.
  64. ^ "Genel Python SSS". Python v2.7.3 belgeleri. Docs.python.org. Alındı 4 Haziran 2020.
  65. ^ "Python'un Web Üzerindeki Güçlü Bir Güç Olmasının 15 Yolu".
  66. ^ "8.18. Pprint - Veri güzel yazıcı - Python 3.8.3 belgeleri". docs.python.org.
  67. ^ Goodger, David. "Bir Pythonista Gibi Kod: Deyimsel Python". Arşivlenen orijinal 27 Mayıs 2014. Alındı 24 Mart 2009.
  68. ^ "Bir Pythonista gibi düşünmek".
  69. ^ "Python, yeni başlayan programcılar için iyi bir dil midir?". Genel Python SSS. Python Yazılım Vakfı. Alındı 21 Mart 2007.
  70. ^ "Python'da girinti ile ilgili mitler". Secnetix.de. Alındı 19 Nisan 2011.
  71. ^ "Python 2.5 Sürümü". Python.org.
  72. ^ "Öne Çıkanlar: Python 2.5". Python.org.
  73. ^ van Rossum, Guido (22 Nisan 2009). "Kuyruk Özyineleme Yok Etme". Neopythonic.blogspot.be. Alındı 3 Aralık 2012.
  74. ^ van Rossum, Guido (9 Şubat 2006). "Dil Tasarımı Sadece Bulmaca Çözmek Değildir". Artima forumları. Artima. Alındı 21 Mart 2007.
  75. ^ van Rossum, Guido; Eby, Phillip J. (10 Mayıs 2005). "PEP 342 - Geliştirilmiş Üreteçler aracılığıyla Coroutines". Python Geliştirme Önerileri. Python Yazılım Vakfı. Alındı 19 Şubat 2012.
  76. ^ "PEP 380". Python.org. Alındı 3 Aralık 2012.
  77. ^ "bölünme". python.org.
  78. ^ "PEP 0465 - Matris çarpımı için özel bir infix operatörü". python.org. Alındı 1 Ocak 2016.
  79. ^ "Python 3.5.1 Sürümü ve Değişiklik Günlüğü". python.org. Alındı 1 Ocak 2016.
  80. ^ "Python 3.8'deki Yenilikler". Alındı 14 Ekim 2019.
  81. ^ "Bölüm 15. İfadeler - 15.21.1. Sayısal Eşitlik Operatörleri == ve! =". Oracle Corporation. Alındı 28 Ağustos 2016.
  82. ^ "Bölüm 15. İfadeler - 15.21.3. Referans Eşitlik Operatörleri == ve! =". Oracle Corporation. Alındı 28 Ağustos 2016.
  83. ^ van Rossum, Guido; Hettinger, Raymond (7 Şubat 2003). "PEP 308 - Koşullu İfadeler". Python Geliştirme Önerileri. Python Yazılım Vakfı. Alındı 13 Temmuz 2011.
  84. ^ "4. Yerleşik Türler - Python 3.6.3rc1 belgeleri". python.org. Alındı 1 Ekim 2017.
  85. ^ "5.3. Demetler ve Diziler - Python 3.7.1rc2 belgeleri". python.org. Alındı 17 Ekim 2018.
  86. ^ a b "PEP 498 - Değişmez Dizi Enterpolasyonu". python.org. Alındı 8 Mart 2017.
  87. ^ "Neden 'self' yöntem tanımlarında ve çağrılarda açıkça kullanılmalıdır?". Tasarım ve Tarih SSS. Python Yazılım Vakfı. Alındı 19 Şubat 2012.
  88. ^ "Python Dil Başvurusu, bölüm 3.3. Yeni stil ve klasik sınıflar, 2.7.1 sürümü için". Alındı 12 Ocak 2011.
  89. ^ "Python için ipucu yazın". LWN.net. 24 Aralık 2014. Alındı 5 Mayıs 2015.
  90. ^ "mypy - Python için İsteğe Bağlı Statik Yazma". Alındı 28 Ocak 2017.
  91. ^ "15. Kayan Nokta Aritmetiği: Sorunlar ve Sınırlamalar - Python 3.8.3 belgeleri". docs.python.org. Alındı 6 Haziran 2020. neredeyse tüm platformlar Python kaymalarını IEEE-754 çift hassasiyetle eşler
  92. ^ Zadka, Moshe; van Rossum, Guido (11 Mart 2001). "PEP 237 - Uzun Tam Sayıları ve Tam Sayıları Birleştirme". Python Geliştirme Önerileri. Python Yazılım Vakfı. Alındı 24 Eylül 2011.
  93. ^ "Yerleşik Türler". Alındı 3 Ekim 2019.
  94. ^ "PEP 465 - Matris çarpımı için özel bir infix operatörü". python.org.
  95. ^ a b Zadka, Moshe; van Rossum, Guido (11 Mart 2001). "PEP 238 - Bölüm Operatörünü Değiştirme". Python Geliştirme Önerileri. Python Yazılım Vakfı. Alındı 23 Ekim 2013.
  96. ^ "Neden Python'un Tamsayı Bölmeli Katları". Alındı 25 Ağustos 2010.
  97. ^ "yuvarlak", Python standart kitaplığı, sürüm 3.2, §2: Yerleşik işlevler, alındı 14 Ağustos 2011
  98. ^ "yuvarlak", Python standart kitaplığı, sürüm 2.7, §2: Yerleşik işlevler, alındı 14 Ağustos 2011
  99. ^ Beazley, David M. (2009). Python Temel Referansı (4. baskı). s.66.
  100. ^ Kernighan, Brian W .; Ritchie, Dennis M. (1988). C Programlama Dili (2. baskı). s.206.
  101. ^ Batista, Facundo. "PEP 0327 - Ondalık Veri Türü". Python.org. Alındı 26 Eylül 2015.
  102. ^ "Python 2.6'daki Yenilikler - Python v2.6.9 belgeleri". docs.python.org. Alındı 26 Eylül 2015.
  103. ^ "Python'un Araştırma İçin Kaybettiği 10 Sebep (Ve Bunu Yapmamasının Birkaç Nedeni) - Hoyt Koepke". www.stat.washington.edu. Alındı 3 Şubat 2019.
  104. ^ Shell, Scott (17 Haziran 2014). "Bilimsel bilgi işlem için Python'a giriş" (PDF). Alındı 3 Şubat 2019.
  105. ^ Piotrowski, Przemyslaw (Temmuz 2006). "Python Sunucu Sayfaları ve Oracle için Hızlı Web Geliştirme Ortamı Oluşturun". Oracle Teknoloji Ağı. Oracle. Alındı 12 Mart 2012.
  106. ^ Batista, Facundo (17 Ekim 2003). "PEP 327 - Ondalık Veri Türü". Python Geliştirme Önerileri. Python Yazılım Vakfı. Alındı 24 Kasım 2008.
  107. ^ Eby, Phillip J. (7 Aralık 2003). "PEP 333 - Python Web Sunucusu Ağ Geçidi Arayüzü v1.0". Python Geliştirme Önerileri. Python Yazılım Vakfı. Alındı 19 Şubat 2012.
  108. ^ Debill, Erik. "Modül Sayıları". ModuleCounts. Alındı 5 Kasım 2019.
  109. ^ "20+ Python Web Kazıma Örneği (Güzel Çorba ve Selenyum) - Meraklılar Gibi". likegeeks.com. 5 Aralık 2017. Alındı 12 Mart 2018.
  110. ^ Düşündüm, Canopy. "Gölgelik". www.enthought.com. Alındı 20 Ağustos 2016.
  111. ^ van Rossum, Guido (5 Haziran 2001). "PEP 7 - C Kodu için Stil Kılavuzu". Python Geliştirme Önerileri. Python Yazılım Vakfı. Alındı 24 Kasım 2008.
  112. ^ "CPython bayt kodu". Docs.python.org. Alındı 16 Şubat 2016.
  113. ^ "Python 2.5 dahili bileşenleri" (PDF). Alındı 19 Nisan 2011.
  114. ^ "Python'u İndir". Python.org. Alındı 13 Aralık 2020.
  115. ^ "tarih [vmspython]". www.vmspython.org. Alındı 4 Aralık 2020.
  116. ^ "Guido van Rossum ile Söyleşi". Oreilly.com. Alındı 24 Kasım 2008.
  117. ^ "Diğer Platformlar için Python'u İndirin". Python.org. Alındı 4 Aralık 2020.
  118. ^ "PyPy uyumluluğu". Pypy.org. Alındı 3 Aralık 2012.
  119. ^ "CPython ve Pypy arasında hız karşılaştırması". Speed.pypy.org. Alındı 3 Aralık 2012.
  120. ^ Shaw, Anthony (30 Mart 2018). "Python'un en hızlı sürümü hangisi?". Hacker Öğlen. Alındı 20 Aralık 2019.
  121. ^ "Uygulama düzeyinde Yığınsız özellikler - PyPy 2.0.2 belgeleri". Doc.pypy.org. Alındı 17 Temmuz 2013.
  122. ^ "Python-for-EV3". LEGO Education. Alındı 17 Nisan 2019.
  123. ^ "Python'u optimize etme planları". Google Proje Barındırma. 15 Aralık 2009. Alındı 24 Eylül 2011.
  124. ^ "Nokia N900'de Python". Stokastik Geometri. 29 Nisan 2010.
  125. ^ "google / huysuz". 10 Nisan 2020 - GitHub aracılığıyla.
  126. ^ "Projeler". opensource.google.
  127. ^ "Nuitka Ana Sayfa | Nuitka Ana Sayfa". nuitka.net. Alındı 18 Ağustos 2017.
  128. ^ Borderies, Olivier (24 Ocak 2019). "Pythran: C ++ hızında Python!". Orta.
  129. ^ "Pythran - Pythran 0.9.5 belgeleri". pythran.readthedocs.io.
  130. ^ Murri Riccardo (2013). Python çalışma zamanlarının sayısal olmayan bilimsel bir kod üzerindeki performansı. Avrupa Bilimde Python Konferansı (EuroSciPy). arXiv:1404.6388. Bibcode:2014arXiv1404.6388M.
  131. ^ "Bilgisayar Dili Kıyaslama Oyunu". Alındı 30 Nisan 2020.
  132. ^ a b Varşova, Barry; Hylton, Jeremy; Goodger, David (13 Haziran 2000). "PEP 1 - PEP Amaç ve Yönergeleri". Python Geliştirme Önerileri. Python Yazılım Vakfı. Alındı 19 Nisan 2011.
  133. ^ "PEP 8 - Python Kodu için Stil Kılavuzu". Python.org.
  134. ^ Cannon, Brett. "Guido, Bazı Adamlar ve Bir Posta Listesi: Python Nasıl Geliştirilir". python.org. Python Yazılım Vakfı. Arşivlenen orijinal 1 Haziran 2009'da. Alındı 27 Haziran 2009.
  135. ^ "Python Geliştirici Kılavuzu".
  136. ^ Norwitz, Neal (8 Nisan 2002). "[Python-Dev] Sürüm Programları (Kararlılık ve değişimdi)". Alındı 27 Haziran 2009.
  137. ^ a b Aahz; Baxter, Anthony (15 Mart 2001). "PEP 6 - Hata Düzeltme Sürümleri". Python Geliştirme Önerileri. Python Yazılım Vakfı. Alındı 27 Haziran 2009.
  138. ^ "Python 3.9'daki Yenilikler". Python. Alındı 28 Kasım 2019.
  139. ^ "PEP 602 - Python için Yıllık Yayın Döngüsü". Python.org. Alındı 6 Kasım 2019.
  140. ^ "Python sürüm ritmini değiştirme [LWN.net]". lwn.net. Alındı 6 Kasım 2019.
  141. ^ "PEP 596 - Python 3.9 Yayın Planı". Python.org. Alındı 6 Kasım 2019.
  142. ^ "Python Buildbot". Python Geliştirici Kılavuzu. Python Yazılım Vakfı. Alındı 24 Eylül 2011.
  143. ^ a b "İştahınızı Kabartmak". Python Eğitimi. Python Yazılım Vakfı. Alındı 20 Şubat 2012.
  144. ^ "Python'da, if bloğundaki dönüşten sonra başka mı kullanmalıyım?". Yığın Taşması. Yığın Değişimi. 17 Şubat 2011. Alındı 6 Mayıs 2011.
  145. ^ Lutz, Mark (2009). Python Öğrenmek: Güçlü Nesne Tabanlı Programlama. O'Reilly Media, Inc. s. 17. ISBN  9781449379322.
  146. ^ Fehily, Chris (2002). Python. Peachpit Press. s. xv. ISBN  9780201748840.
  147. ^ "TIOBE Endeksi". TIOBE - Yazılım Kalitesi Şirketi. Alındı 7 Mart 2017.
  148. ^ TIOBE Yazılım Endeksi (2015). "TIOBE Programlama Topluluğu Dizini Python". Alındı 10 Eylül 2015.
  149. ^ Prechelt, Lutz (14 Mart 2000). "C, C ++, Java, Perl, Python, Rexx ve Tcl'nin ampirik bir karşılaştırması" (PDF). Alındı 30 Ağustos 2013.
  150. ^ "Python hakkında alıntılar". Python Yazılım Vakfı. Alındı 8 Ocak 2012.
  151. ^ "Python Kullanan Kuruluşlar". Python Yazılım Vakfı. Alındı 15 Ocak 2009.
  152. ^ "Python: programlamanın kutsal kasesi". CERN Bülten. CERN Yayınları (31/2006). 31 Temmuz 2006. Alındı 11 Şubat 2012.
  153. ^ Shafer, Daniel G. (17 Ocak 2003). "Python, Uzay Mekiği Görev Tasarımını Kolaylaştırıyor". Python Yazılım Vakfı. Alındı 24 Kasım 2008.
  154. ^ "Tornado: Facebook'un Python için Gerçek Zamanlı Web Çerçevesi - Geliştiriciler için Facebook". Geliştiriciler için Facebook. Alındı 19 Haziran 2018.
  155. ^ "Instagram'a Güç Katan: Yüzlerce Örnek, Düzinelerce Teknoloji". Instagram Mühendisliği. Alındı 27 Mayıs 2019.
  156. ^ "Spotify'da Python'u nasıl kullanıyoruz". Spotify Labs. 20 Mart 2013. Alındı 25 Temmuz 2018.
  157. ^ Fortenberry, Tim (17 Ocak 2003). "Python'da Endüstriyel Işık ve Büyü Çalışmaları". Python Yazılım Vakfı. Alındı 11 Şubat 2012.
  158. ^ Taft, Darryl K. (5 Mart 2007). "Python Slithers into Systems". eWeek.com. Ziff Davis Holdings. Alındı 24 Eylül 2011.
  159. ^ GitHub - reddit-arşiv / reddit: reddit.com'dan tarihsel kod., Reddit Arşivleri, 19 Mart 2019, alındı 20 Mart 2019
  160. ^ "Web siteleri için Python kullanım istatistikleri ve pazar payı". 2012. Alındı 18 Aralık 2012.
  161. ^ Oliphant, Travis (2007). "Bilimsel Hesaplama için Python". Bilim ve Mühendislikte Hesaplama. 9 (3): 10–20. Bibcode:2007CSE ..... 9c..10O. CiteSeerX  10.1.1.474.6460. doi:10.1109 / MCSE.2007.58. S2CID  206457124.
  162. ^ Millman, K. Jarrod; Aivazis, Michael (2011). "Bilim Adamları ve Mühendisler için Python". Bilim ve Mühendislikte Hesaplama. 13 (2): 9–12. Bibcode:2011CSE ... 13b ... 9M. doi:10.1109 / MCSE.2011.36.
  163. ^ SageMath ile bilim eğitimi, Fen Eğitiminde Yenilikçi Hesaplama, alındı 22 Nisan 2019
  164. ^ "OpenCV: OpenCV-Python Eğiticileri". docs.opencv.org. Alındı 14 Eylül 2020.
  165. ^ "Windows için GIMP Yükleyicileri - Sık Sorulan Sorular". 26 Temmuz 2013. Arşivlenen orijinal 17 Temmuz 2013 tarihinde. Alındı 26 Temmuz 2013.
  166. ^ "jasc psp9 bileşenleri". Arşivlenen orijinal 19 Mart 2008.
  167. ^ "Coğrafi işlem komut dosyaları yazmaya başlama hakkında". ArcGIS Desktop Yardımı 9.2. Çevresel Sistemler Araştırma Enstitüsü. 17 Kasım 2006. Alındı 11 Şubat 2012.
  168. ^ CCP porkbelly (24 Ağustos 2010). "Yığınsız Python 2.7". EVE Topluluk Geliştirme Blogları. ÇKP Oyunları. Bildiğiniz gibi EVE, özünde Stackless Python olarak bilinen programlama diline sahiptir.
  169. ^ Caudill, Barry (20 Eylül 2005). "Modding Sid Meier's Civilization IV". Sid Meier's Civilization IV Geliştirici Blogu. Firaxis Oyunları. Arşivlenen orijinal 2 Aralık 2010. üç seviye araç yarattık ... Bir sonraki seviye Python ve XML desteği sunarak daha fazla deneyime sahip modcuların oyun dünyasını ve içindeki her şeyi yönetmesine izin veriyor.
  170. ^ "Python Dil Kılavuzu (v1.0)". Google Dokümanlar Listesi Veri API'si v1.0. Arşivlenen orijinal 15 Temmuz 2010'da.
  171. ^ Dean, Jeff; Monga, Rajat; et al. (9 Kasım 2015). "TensorFlow: Heterojen sistemlerde büyük ölçekli makine öğrenimi" (PDF). TensorFlow.org. Google Araştırması. Alındı 10 Kasım 2015.
  172. ^ Piatetsky, Gregory. "Python, 2018'de Analitik, Veri Bilimi, Makine Öğrenimi için En İyi Yazılım: Trendler ve Analiz". KDnuggets. KDnuggets. Alındı 30 Mayıs 2018.
  173. ^ "Scikit-learn'ü kim kullanıyor? - scikit-learn 0.20.1 belgeleri". scikit-learn.org.
  174. ^ Jouppi, Norm. "Google, TPU özel yongasıyla makine öğrenimi görevlerini güçlendiriyor". Google Cloud Platform Blogu. Alındı 19 Mayıs 2016.
  175. ^ "Natural Language Toolkit - NLTK 3.5b1 belgeleri". www.nltk.org.
  176. ^ "Python Kurulumu ve Kullanımı". Python Yazılım Vakfı. Alındı 10 Ocak 2020.
  177. ^ "Dokunulmazlık: Güvende Olduğunuzu Bilmek". Arşivlenen orijinal 16 Şubat 2009.
  178. ^ "Temel Güvenlik". Temel Güvenlik.
  179. ^ "Şeker nedir?". Şeker Laboratuvarları. Alındı 11 Şubat 2012.
  180. ^ "4.0 Yeni Özellikler ve Düzeltmeler". LibreOffice.org. Belge Vakfı. 2013. Alındı 25 Şubat 2013.
  181. ^ "Python Kullanıcıları için Gotchas". boo.codehaus.org. Codehaus Vakfı. Arşivlenen orijinal 11 Aralık 2008'de. Alındı 24 Kasım 2008.
  182. ^ Esterbrook, Charles. "Teşekkürler". cobra-language.com. Kobra Dili. Alındı 7 Nisan 2010.
  183. ^ "Teklifler: yineleyiciler ve oluşturucular [ES4 Wiki]". wiki.ecmascript.org. Arşivlenen orijinal 20 Ekim 2007'de. Alındı 24 Kasım 2008.
  184. ^ "SSS: GDScript nedir ve neden kullanmalıyım?".
  185. ^ Kincaid, Jason (10 Kasım 2009). "Google'ın Go: Python'un C ++ ile Buluştuğu Yeni Bir Programlama Dili". TechCrunch. Alındı 29 Ocak 2010.
  186. ^ Strachan, James (29 Ağustos 2003). "Groovy - Java platformu için yeni bir dinamik dilin doğuşu". Arşivlenen orijinal 5 Nisan 2007. Alındı 11 Haziran 2007.
  187. ^ Yegulalp, Serdar (16 Ocak 2017). "Nim dili Python, Rust, Go ve Lisp'in en iyilerinden alınmıştır". InfoWorld. Nim'in sözdizimi, girintili kod blokları ve aynı sözdiziminden bazılarını kullandığı için (if / elif / then / else bloklarının oluşturulma şekli gibi) Python'un sözdizimi kuvvetle anımsatmaktadır.
  188. ^ "Ruby'nin Yaratıcısı ile Söyleşi". Linuxdevcenter.com. Alındı 3 Aralık 2012.
  189. ^ Lattner, Chris (3 Haziran 2014). "Chris Lattner'ın Ana Sayfası". Chris Lattner. Alındı 3 Haziran 2014. 2010 yılının Temmuz ayında Swift Programlama Dili üzerinde çalışmaya başladım. Temel dil yapısının çoğunu, varlığından yalnızca birkaç kişi haberdar olarak uyguladım. Diğer birkaç (harika) kişi 2011'in sonlarında ciddi anlamda katkıda bulunmaya başladı ve Temmuz 2013'te Apple Developer Tools grubu için ana odak noktası haline geldi [...] Objective-C, Rust, Haskell, Ruby, Python'dan fikirler çizerek C #, CLU ve listelenemeyecek kadar çok diğerleri.
  190. ^ Kupries, Andreas; Fellows, Donal K. (14 Eylül 2000). "İPUCU # 3: İPUCU Formatı". tcl.tk. Tcl Developer Xchange. Alındı 24 Kasım 2008.
  191. ^ Gustafsson, Per; Niskanen, Raimo (29 Ocak 2007). "EEP 1: EEP Amacı ve Yönergeleri". erlang.org. Alındı 19 Nisan 2011.
  192. ^ "Hızlı Evrim Süreci". GitHub'da Swift Programming Language Evolution deposu. 18 Şubat 2020. Alındı 27 Nisan 2020.

Kaynaklar

daha fazla okuma

Dış bağlantılar