Giriş

“Python kütüphanesi” birkaç farklı türde bileşen içerir.

Sayılar ve listeler gibi normalde bir dilin “çekirdeğinin” parçası olarak kabul edilecek veri türlerini içerir. Bu türler için, Python dil çekirdeği değişmezlerin biçimini tanımlar ve anlamları üzerine bazı kısıtlamalar koyar, ancak anlamları tam olarak tanımlamaz. (Öte yandan, dil çekirdeği operatörlerin yazımı ve öncelikleri gibi sözdizimsel özellikleri tanımlar).

Kütüphane ayrıca yerleşik fonksiyonlar ve istisnalar da içerir — bir import deyimine ihtiyaç duymadan tüm Python kodları tarafından kullanılabilen nesneler. Bunlardan bazıları çekirdek dil tarafından tanımlanmıştır, ancak çoğu çekirdek semantiği için gerekli değildir ve burada sadece açıklanmıştır.

Bununla birlikte, kütüphanenin büyük kısmı bir modül koleksiyonundan oluşur. Bu koleksiyonu incelemenin birçok yolu vardır. Bazı modüller C dilinde yazılmış ve Python yorumlayıcısına yerleştirilmiştir; diğerleri Python dilinde yazılmış ve kaynak biçiminde içe aktarılmıştır. Bazı modüller, yığın izlemesi yazdırma gibi Python’a özgü arayüzler sağlar; bazıları belirli donanımlara erişim gibi belirli işletim sistemlerine özgü arayüzler sağlar; diğerleri World Wide Web gibi belirli bir uygulama alanına özgü arayüzler sağlar. Bazı modüller Python’un tüm sürümlerinde ve portlarında mevcuttur; diğerleri yalnızca temel sistem bunları desteklediğinde veya gerektirdiğinde kullanılabilir; ancak diğerleri yalnızca Python derlendiğinde ve yüklendiğinde belirli bir yapılandırma seçeneği seçildiğinde kullanılabilir.

Bu kılavuz “içten dışa doğru” düzenlenmiştir: ilk olarak yerleşik fonksiyonlar, veri türleri ve istisnalar ve son olarak ilgili modüllerin bölümlerinde gruplandırılmış modüller açıklanmaktadır.

Bu, bu kılavuzu en baştan okumaya başlarsanız ve sıkıldığınızda bir sonraki bölüme atlarsanız, Python kütüphanesi tarafından desteklenen mevcut modüller ve uygulama alanları hakkında makul bir genel bakış elde edeceğiniz anlamına gelir. Elbette bunu bir roman gibi okumak zorunda değilsiniz — içindekiler tablosuna da göz atabilir (kılavuzun önünde) veya dizinde (arkada) belirli bir fonksiyonu, modülü veya terimi arayabilirsiniz. Ve son olarak, rastgele konular hakkında bilgi edinmekten hoşlanıyorsanız, rastgele bir sayfa numarası seçip (bkz. modül random) bir ya da iki bölüm okuyabilirsiniz. Bu kılavuzun bölümlerini okuma sıranız ne olursa olsun, kılavuzun geri kalanı bu materyale aşina olduğunuzu varsaydığından, bölüm Gömülü Fonksiyonlar ile başlamanıza yardımcı olur.

Gösteri başlasın!

Kullanılabilirlik hakkında notlar

  • “Kullanılabilirlik: Unix” notu, bu fonksiyonun Unix sistemlerinde yaygın olarak bulunduğu anlamına gelir. Belirli bir işletim sistemindeki varlığı hakkında herhangi bir iddiada bulunmaz.

  • If not separately noted, all functions that claim “Availability: Unix” are supported on macOS and iOS, both of which build on a Unix core.

  • Bir kullanılabilirlik notu hem minimum Çekirdek(Kernel) sürümü hem de minimum libc sürümü içeriyorsa, her iki koşul da geçerli olmalıdır. Örneğin Availability: Linux >= 3.17 with glibc >= 2.27 notuna sahip bir özellik için hem Linux 3.17 veya daha yeni hem de glibc 2.27 veya daha yeni olması gerekir.

WebAssembly platformları

WebAssembly platformları wasm32-emscripten (Emscripten) ve wasm32-wasi (WASI) POSIX API`lerinin bir alt kümesini sağlar. WebAssembly çalışma zamanları ve tarayıcıları korumalıdır ve ana bilgisayara ve harici kaynaklara sınırlı erişime sahiptir. Süreçler, iş parçacığı, ağ, sinyaller veya diğer süreçler arası iletişim (IPC) biçimlerini kullanan herhangi bir Python standart kütüphane modülü ya mevcut değildir ya da diğer Unix benzeri sistemlerde olduğu gibi çalışmayabilir. Dosya I/O, dosya sistemi ve Unix izinleriyle ilgili işlevler de kısıtlanmıştır. Emscripten bloklama I/O’ye izin vermez. sleep() gibi diğer engelleme işlemleri tarayıcı olay döngüsünü engeller.

Python’un WebAssembly platformlarındaki özellikleri ve davranışı Emscripten-SDK veya WASI-SDK sürümüne, WASM çalışma zamanlarına (tarayıcı, NodeJS, wasmtime) ve Python derleme zamanı bayraklarına(build time flags) bağlıdır. WebAssembly, Emscripten ve WASI gelişmekte olan standartlardır; ağ oluşturma gibi bazı özellikler gelecekte desteklenebilir.

Tarayıcıda Python için kullanıcılar Pyodide veya PyScript’i düşünmelidir. PyScript, kendisi de CPython ve Emscripten üzerine inşa edilmiş olan Pyodide üzerine kurulmuştur. Pyodide, tarayıcıların JavaScript ve DOM API’lerine erişimin yanı sıra JavaScript’in XMLHttpRequest ve Fetch API’leri ile sınırlı ağ yetenekleri sağlar.

  • Süreçle ilgili API’ler kullanılamaz veya her zaman bir hata ile başarısız olur. Bu, yeni süreçler oluşturan (fork(), execve()), süreçleri bekleyen (waitpid()), sinyal gönderen (kill()) veya süreçlerle başka şekilde etkileşime giren API’leri içerir. subprocess içe aktarılabilir ancak çalışmaz.

  • socket modülü mevcuttur, ancak sınırlıdır ve diğer platformlardan farklı davranır. Emscripten üzerinde, soketler her zaman bloklama yapmaz ve WebSockets aracılığıyla TCP’yi proxy’lemek için sunucuda ek JavaScript kodu ve yardımcılar gerektirir; daha fazla bilgi için Emscripten Networking bölümüne bakın. WASI anlık görüntü önizleme 1, yalnızca mevcut bir dosya tanımlayıcısından soketlere izin verir.

  • Bazı fonksiyonlar hiçbir şey yapmayan ve her zaman sabit kodlanmış değerler döndüren taslaklardır.

  • Dosya tanımlayıcıları, dosya izinleri, dosya sahipliği ve bağlantılarla ilgili işlevler sınırlıdır ve bazı işlemleri desteklemez. Örneğin, WASI mutlak dosya adlarıyla ortak bağlantılara izin vermez.

iOS

iOS is, in most respects, a POSIX operating system. File I/O, socket handling, and threading all behave as they would on any POSIX operating system. However, there are several major differences between iOS and other POSIX systems.

  • iOS can only use Python in “embedded” mode. There is no Python REPL, and no ability to execute binaries that are part of the normal Python developer experience, such as pip. To add Python code to your iOS app, you must use the Python embedding API to add a Python interpreter to an iOS app created with Xcode. See the iOS usage guide for more details.

  • An iOS app cannot use any form of subprocessing, background processing, or inter-process communication. If an iOS app attempts to create a subprocess, the process creating the subprocess will either lock up, or crash. An iOS app has no visibility of other applications that are running, nor any ability to communicate with other running applications, outside of the iOS-specific APIs that exist for this purpose.

  • iOS apps have limited access to modify system resources (such as the system clock). These resources will often be readable, but attempts to modify those resources will usually fail.

  • iOS apps have a limited concept of console input and output. stdout and stderr exist, and content written to stdout and stderr will be visible in logs when running in Xcode, but this content won’t be recorded in the system log. If a user who has installed your app provides their app logs as a diagnostic aid, they will not include any detail written to stdout or stderr.

    iOS apps have no concept of stdin at all. While iOS apps can have a keyboard, this is a software feature, not something that is attached to stdin.

    As a result, Python library that involve console manipulation (such as curses and readline) are not available on iOS.