Sayısal Python: Türler, Modüller ve Pratik Kullanım

Son Güncelleme: 05/17/2026
  • Python, temel sayısal türlerin (int, float, complex, bool) yanı sıra günlük hesaplamalar için math, cmath, decimal ve random gibi güçlü yardımcı fonksiyonlar sunar.
  • Numbers modülü, soyut temel sınıflar tanımlayarak birçok yerleşik, NumPy ve özel sayısal türün Number örnekleri olarak tek tip şekilde ele alınmasını sağlar.
  • Yuvarlama yöntemleri, özel değerler (NaN, sonsuzlar) ve ondalık sayılar aracılığıyla yapılan kesin ondalık aritmetik, sağlam bilimsel ve finansal kodlar için çok önemlidir.
  • Python'ın daha geniş sayısal ekosistemi, özellikle NumPy, ağır hesaplamalar için sabit genişlikli tamsayılar ve yüksek performanslı dizilerle temel türleri genişletir.

sayısal Python kavramı

Python programlarının çoğunun temelinde sayılarla çalışmak yatar.İster basit bir betik yazıyor olun, ister bilimsel verileri işliyor olun veya bir algoritmanın prototipini geliştiriyor olun, Python'ın sayısal değerleri nasıl temsil ettiğini ve işlediğini anlamak, beklediğiniz gibi çalışan güvenilir ve verimli kod yazmanın ilk adımıdır.

İnsanlar "sayısal Python"dan bahsettiklerinde genellikle iki şeyi kastediyorlar.Bir yandan, yerleşik sayı türleri ve standart kütüphane araçları gibi... math, cmath, decimal, random hem de numbersÖte yandan, sayısal hesaplama etrafındaki daha geniş ekosistem, dili ek sayısal türler ve vektörleştirilmiş işlemlerle genişleten NumPy gibi kütüphanelerle birlikte gelir. Bu kılavuz, temel türlerden gelişmiş soyutlamalara kadar bu temeli ayrıntılı olarak ele almaktadır.

Python'da temel sayısal veri tipleri

Python, günlük ihtiyaçların çoğunu karşılayan çeşitli yerleşik sayısal kategoriler tanımlar.: Tam sayılar için tamsayılar, ondalıklı gerçek değerler için kayan noktalı sayılar, gerçek ve sanal kısımları olan değerler için karmaşık sayılar ve çok küçük bir tamsayı ailesi üyesi gibi davranan özel Boolean türü. Bunların hepsi Python'ın aritmetik operatörleriyle sorunsuz bir şekilde entegre olur.

Tamsayılar (int(Ondalık noktası olmayan, pozitif veya negatif tam sayıları temsil eder)Standart Python'da boyutları için sabit bir üst sınır yoktur; belleğiniz olduğu sürece tamsayı değeriniz büyüyebilir. Örneğin, şu değerler: 1, -5 or 20234567890123456789 hepsi geçerli int Örnekler var ve bunu aşağıdakilerle doğrulayabilirsiniz. type(1) or type(-5), hangi geri dönecek <class 'int'>.

Kayan noktalı sayılar (float( ) kesirli bileşeni olan gerçek sayılar için kullanılır.Bunlar, ondalık nokta ile yazılır, örneğin: 2.0, -7.823457 or 0.5veya bilimsel gösterimle, örneğin 1e8 (yani 100,000,000). Python'da, tamsayılar arasında bile olsa, bölme gibi işlemler yaparken sonuç genellikle bir sayıya dönüştürülür. float; Örneğin, 9 / 2 verim 4.5, ve type(4.5) is <class 'float'>.

Karmaşık sayılar (complex(gerçek bir parçayı ve hayali bir parçayı birleştirmek)sonuna eklenen bir harfle yazılmış j Hayali birim için. Örneğin, bir değer. 2 + 3j 2 adet gerçek bileşeni ve 3 adet sanal bileşeni vardır. Bunları doğrudan oluşturabilirsiniz (örneğin 3.14j) ve bunları aşağıdaki gibi özelliklerle inceleyin: .real hem de .imagveya arayın .conjugate() Karmaşık eşleniği elde etmek için kullanılırlar. Bunlar özellikle mühendislik, sinyal işleme ve bilimsel hesaplama alanlarında popülerdir.

Mantıksal değerler (bool) teknik olarak sayısal değerlerdirÇünkü, True hem de False Aritmetik ifadelerde 1 ve 0 gibi tamsayılar gibi davranırlar. Örneğin, True + 2 için değerlendirir 3İçeriden bakıldığında, bool bir alt sınıfıdır intBu nedenle mantıksal değerler hesaplamalara ve karşılaştırmalara sorunsuz bir şekilde entegre olur.

Python, bu sayısal türleri ifadelerde serbestçe karıştırmanıza olanak tanır.Gerektiğinde daha genel bir türe yükseltme. Bir ekleme int a float a verir floatVe kayan noktalı sayıları karmaşık sayılarla birleştirmek karmaşık bir sonuç doğurur: örneğin şu gibi ifadeler. 1 + 1.0, 2.0 + (3 + 5j) or 6 / (5 + 8j) Tüm işler gereksiz bir törene gerek kalmadan yapılır.

Python sayısal türleri

Aritmetik operatörler ve bölme davranışı

Sayısal değerlere sahip olduktan sonra, bunlarla çalışmak için olağan aritmetik operatörleri kullanırsınız.: ek (+), çıkarma (-), çarpma işlemi (*), bölüm (/), kat bölümü (//), üs alma (**) ve modül (%Python, bu yöntemleri tamsayılar, ondalık sayılar ve karmaşık sayılar üzerinde uygular ve gerektiğinde tür dönüştürme işlemini gerçekleştirir.

Python'ın tasarımında bölme işlemi oldukça bilinçli bir yaklaşımın benimsendiği alanlardan biridir.. kullanma / Her iki argüman da sayısal olduğunda, her ikisi de tamsayı olsa bile, her zaman ondalık sayı sonucu verir. Dolayısıyla 9 / 2 içinde sonuç 4.5, değil 4Bu, varsayılan olarak gerçek sayılarla bölme işlemini düşünmenizi teşvik eder; bu da genellikle bilimsel veya finansal hesaplamalarda istediğiniz şeydir.

Kesirli kısmı yok sayan tam sayı bölme işlemine ihtiyacınız varsa, taban bölme operatörünü kullanırsınız. //. Örneğin, 9 // 2 üretir 4, ve -9 // 2 verim -5Sonuç tam sayıya yuvarlandığı için (eksi sonsuza doğru aşağı yuvarlandığı için). Ayrıca, divmod(a, b) Bu fonksiyon size hem bölümü hem de kalanı aynı anda verir ve sonucu yansıtan bir çift döndürür. (a // b, a % b).

Python, perde arkasında farklı sayısal türlerin nasıl etkileşimde bulunacağını dikkatlice koordine eder.Standart kütüphanede görebileceğiniz dahili bir kalıp, "operatör geri dönüşleri" fikridir: önce türe özgü bir uygulamayı deneyen, örneğin rasyonel sayılar için, ardından işlenenlerden biri normal bir sayı olduğunda yerleşik operatörlere geri dönen fonksiyonlar. int, float or complexBu, özel yöntemler kullanarak özel sayısal türlerin Python'ın aritmetik sistemiyle etkileşim kurmasını sağlar. __add__ hem de __radd__.

Rasyonel aritmetik için kütüphane kodu, örneğin: Fraction Bu tür, bu stratejiyi açıkça göstermektedir.İki tanesini toplarken... Fraction Bazı durumlarda, pay ve paydaları çapraz çarparak yeni bir kesir hesaplar. Eğer bir Fraction düz bir tamsayıya veya bir örneğe numbers.RationalHassas rasyonel algoritmayı kullanır. Diğer işlenen bir ise float or complexBu işlem, daha geniş türe dönüştürülecek ve düzenli operatörlere devredilecek, böylece davranış tutarlı ve sezgisel kalacaktır.

Dahili sayısal fonksiyonlar

Python, temel operatörlerin ötesinde, sayıları nasıl işleyeceğini bilen bir dizi yerleşik fonksiyonla birlikte gelir.Bu işlevler, herhangi bir şey içe aktarmaya gerek kalmadan her zaman kullanılabilir ve standart sayısal türlerin yanı sıra doğru özel yöntemleri uygulayan tüm özel nesnelerde çalışır.

abs(x) argümanının mutlak değerini döndürür.Negatif sayıları pozitife çevirip pozitif değerleri değiştirmeden bırakmak. Eğer bu işlemi tanımlayan bir nesne geçirirseniz... __abs__()Python bu yönteme yetki devredecektir. Karmaşık sayılar için, abs() Büyüklüğü (karmaşık düzlemde orijinden olan mesafeyi) döndürür.

round(x, ndigits) Belirtilen ondalık basamak sayısına yuvarlanmış bir değer verir.. Eğer ndigits atlanır veya NoneEn yakın tamsayıyı döndürür. Okul kitaplarındaki "yarı yukarı yuvarlama" kuralından farklı olarak, Python'ın yerleşik özelliği... round Tekrarlanan hesaplamalarda istatistiksel sapmayı azaltmak için eşitlik durumlarında "yarıyı çift sayıya yuvarlama" stratejisini kullanır.

Dönüştürme fonksiyonları gibi int() hem de float() diğer nesnelerden sayılar oluşturmakÇağrı int(x) Bir ondalık sayının kesirli kısmını atar (örneğin, int(1.9) is 1), Ve float(x) Tamsayılar, dizeler veya uyumlu nesnelerden kayan noktalı bir gösterim üretir. Kayan noktalı sayıdan tamsayıya dönüştürme işleminde yuvarlama gerçekleşmez; ondalık kısım basitçe kesilir.

Diğer yerleşik işlevler ise temsil ve toplama rollerini üstlenir.. gibi işlevler hex() hem de oct() Onaltılık veya sekizlik sistemde tamsayıların dize gösterimlerini uygun öneklerle birlikte döndürür (0x hem de 0o). Birleştirme yardımcıları, örneğin max() hem de min() Bir yinelenebilir nesneyi veya bir dizi argümanı tarayarak en büyük veya en küçük değeri bulurken, pow() ve ** Operatör, üs alma işlemlerini hesaplar ve isteğe bağlı olarak modüler üs alma için üçüncü bir argüman kabul eder.

Gelişmiş sayısal araçlar: math, cmath ve decimal

Daha karmaşık hesaplamalar için Python, özel standart kütüphane modülleri sunmaktadır. Temel dili şişirmek yerine. Sayısal çalışmalar için en önemlileri şunlardır: math, cmath hem de decimalHer biri sorunların belirli bir alt kümesini hedef alıyor.

MKS math Bu modül, gerçek değerli kayan noktalı matematiğe odaklanmaktadır.Bunu içe aktardıktan sonra... import mathMühendislik, fizik ve günlük analizlerde yaygın olarak ihtiyaç duyulan fonksiyonlara ve sabitlere erişim elde edersiniz; bunların tümü verimli C kodunda uygulanmıştır ve üzerinde çalışmaktadır. float değerleri.

math sayı kuramı ve gösterim araçlarını içerir gibi math.ceil() En yakın tam sayıya yuvarlamak için, math.floor() Aşağı yuvarlama için, math.modf() Bir ondalık sayıyı kesirli ve tam sayı kısımlarına ayırmak ve math.frexp() / math.ldexp() Dahili ikili gösterimle çalışmak için. Ayrıca üs alma ve logaritma alma gibi rutinler de sağlar. math.exp(), math.log(), math.log10(), math.pow() hem de math.sqrt()Trigonometrik ve hiperbolik fonksiyonlar gibi fonksiyonların yanı sıra, math.sin(), math.cos(), math.tan(), math.asin(), math.acos(), math.atan(), math.atan2(), math.sinh(), math.cosh() hem de math.tanh().

kolaylık sağlamak için, math temel sabitleri ihraç eder, örneğin math.pi hem de math.eBu yöntemler, alan, açı veya üstel büyüme hesaplamaları yaparken ve kod tabanınız genelinde tutarlı ve hassas değerler elde etmek istediğinizde oldukça kullanışlıdır.

Karmaşık sayılarla çalışmanız gerektiğinde, cmath Modül, karmaşık düzlem için de aynı rolü oynar.API'si aynalar halindedir. math Ancak karmaşık argümanlar kullanır ve karmaşık sonuçlar döndürür; bu nedenle sayıları gerçek ve sanal kısımlara manuel olarak ayırmadan karmaşık üslü ifadeleri, logaritmaları ve trigonometrik fonksiyonları hesaplayabilirsiniz.

MKS decimal Bu modül farklı bir sorun noktasına odaklanıyor: kesin 10 tabanlı aritmetik.Standart ikili kayan noktalı sayılar birçok ondalık kesri tam olarak temsil edemez, bu nedenle aşağıdaki gibi hesaplamalar 0.1 + 0.2 Hafif bir sapmaya yol açar. decimal.Decimal Bu durum, keyfi hassasiyetli 10 tabanlı aritmetik kullanarak aşılır; bu da onu finansal uygulamalar ve yuvarlama davranışını çok sıkı bir şekilde kontrol etmeniz gereken her yer için ideal hale getirir.

Varsayılan olarak, Python'ın kayan noktalı işlemleri IEEE-754 davranışını izler ve 2 tabanında gösterim kullanır.Bir değer, temsil edilebilir iki sayı arasında tam olarak ortada yer aldığında, "yarısını çift sayıya yuvarla" uygulanır; yani eşitlik durumlarının yarısı aşağıya, yarısı yukarıya yuvarlanır. Bu, büyük hesaplamalarda sistematik sapmayı önler. Ticari "yarısını yukarı yuvarla" semantiği istiyorsanız, bunu yapılandırabilirsiniz. decimal kullanmak için bağlam ROUND_HALF_UPBu, her zaman sıfırdan 5 değer kadar uzaklaşmayı sağlar.

Sayısal veri tipleriyle pratikte çalışma

Sayıların etkileşimli olarak nasıl davrandığını keşfetmek, sezgiyi geliştirmek için harika bir yoldur.Python yorumlayıcısını çalıştırın ve tamsayılar, ondalık sayılar ve karmaşık sayılardan oluşan bir karışım oluşturun, ardından bunlar üzerinde temel işlemleri deneyin. Toplama ve çarpma basittir, ancak bölme, taban bölme, yuvarlama ve dönüştürme işlemleriyle denemeler yapmak ve sonucun türünün nasıl değiştiğini gözlemlemek özellikle öğreticidir.

Sayısal türler arasında dönüştürme, bazen bir API'nin beklentilerini karşılamak veya mantığı basitleştirmek için gereklidir.Eğer elinizde ondalık sayı varsa ve sadece tam sayı kısmını istiyorsanız, onu şu şekilde bir değişkene atayın: my_float = 1.9 ve sonra arayın my_int = int(my_float). Baskı my_int verir 1, ve type(my_int) bunun bir olduğunu doğruluyor intKesirli kısmın yuvarlanmak yerine atıldığını unutmayın.

Ters yönde, yani daha genel bir türe geçişte, genellikle dolaylı olarak gerçekleşir.Bir tamsayı ile bir ondalık sayıyı topladığınızda, Python gerçek sayı sistemi tamsayıları içerdiğinden, sormadan ondalık sayı döndürür. Aynı durum, bir ondalık sayı ile karmaşık bir sayıyı birleştirdiğinizde de gerçekleşir: ondalık sayının sanal kısmı sıfır olarak kabul edilir ve sonuç karmaşık sayı olur.

Karmaşık sayılar, onları doğal hissettiren çeşitli yerleşik kolaylıklar içerir.Doğrudan inceleyebilirsiniz. a.real hem de a.imag Bileşenleri almak için şunu çağırın: a.conjugate() Hayali kısmın işaretini ters çevirmek ve bunları fonksiyonlara aktarmak cmath Manuel dönüştürmeye gerek kalmadan. Nadiren kullansanız bile, var olduklarını ve nasıl davrandıklarını bilmek, bilimsel kodla karşılaştığınızda yardımcı olur.

Kayan noktalı verilerle çalışırken doğruluk ve hassasiyet her zaman önemlidir.Standart bir Python'ın etkin hassasiyeti. float Yaklaşık 15 ondalık basamağa kadardır; bunun ötesinde, 16. basamak güvenilir olmayabilir. Birçok görev için bu tamamen kabul edilebilir, ancak kesin ondalık aritmetik veya daha tahmin edilebilir yuvarlama gerekiyorsa, decimal Bu modül, performanstan biraz ödün vererek ihtiyacınız olan kontrolü sağlar.

Rastgele sayılar ve özel sayısal değerler

Rastgele sayı üretmek, Python'daki sayısal iş akışlarında sıkça karşılaşılan bir diğer görevdir.İster basit oyunlar geliştiriyor olun, ister Monte Carlo simülasyonları yürütüyor olun veya uç koşulları test eden senaryolar yazıyor olun, standart kütüphane size bu imkanı sunar. random Bu modül, bu tür senaryolar için temel bilgileri sağlar.

random.randint(a, b) 0 ile 1 arasında sözde rastgele bir tamsayı üretir. a hem de b, kapsayıcıBu, zar atışlarını simüle etmeyi veya bir listede rastgele dizinler seçmeyi kolaylaştırır. Kayan noktalı değerler için, aşağıdaki gibi işlevler kullanılabilir. random.random() ve ilgili yardımcı fonksiyonlar, [0.0, 1.0) gibi aralıklarda tekdüze rastgele sayılar üretir; bu sayılar, belirli dağıtımınıza göre ölçeklendirilmeye veya dönüştürülmeye hazırdır.

Python ayrıca, alışılmadık veya "uç durum" niceliklerini temsil eden birkaç sayısal değer de sunmaktadır.Bunlardan biri NaN'dir ("Sayı Değil"), örneğin şu şekilde elde edilir: float('nan')NaN, sıfırı sıfıra bölme veya giriş verilerinden bozuk bir sayısal alanı ayrıştırma gibi tanımsız veya temsil edilemeyen sonuçları gösterir.

Python, NaN'ye ek olarak pozitif ve negatif sonsuzluğu da destekler., kullanılarak inşa edildi float('inf') hem de float('-inf')Bunlar, minimum veya maksimum değerleri arayan algoritmalar için değişkenleri başlatırken veya sayısal yöntemlerde sınırsız aralıkları modellerken işaretleyici değerler olarak kullanışlıdır.

NaN değerleriyle çalışmak özel dikkat gerektirir çünkü bunlar normal sayılar gibi davranmazlar.NaN içeren karşılaştırmalar her zaman yanlıştır (hatta nan == nanAyrıca, NaN ile yapılan aritmetik işlemler, NaN'nin sonuç boyunca yayılmasına neden olma eğilimindedir. Bu kılavuz NaN semantiğine derinlemesine girmese de, bu özelliklerin farkında olmak, veri işlem hatlarını ve sayısal algoritmaları daha etkili bir şekilde hata ayıklamanıza yardımcı olur.

Sayılar modülü ile soyut sayısal hiyerarşiler

Kodunuz daha karmaşık hale geldikçe, "sayısal" değerleri tanımak için esnek bir yönteme ihtiyaç duyabilirsiniz. her bir beton türünü tek tek manuel olarak kontrol etmeden (örneğin) int, float, complex ve NumPy skalerleri). İşte burada devreye giriyor. numbers Bu modül devreye girerek sayısal türlerin soyut bir hiyerarşisini sunar.

MKS numbers Bu modül, sayısal davranışı tanımlayan soyut temel sınıfları (ABC'ler) tanımlar.Gibi Number, Complex, Real, Rational hem de IntegralBu sınıflar doğrudan örneklendirilmek üzere tasarlanmamıştır. Bunun yerine, somut sayısal türler, gerekli işlemleri ve özellikleri uyguladıklarını belirtmek için bunlardan miras alırlar.

En genel ABC şudur: numbers.Number"Herhangi bir sayısal türü" temsil edenBir değişkenin sayısal olarak ele alınıp alınmaması gerektiğini test etmek istiyorsanız (örneğin hata ayıklama sırasında veya küçük yardımcı komut dosyaları yazarken), şunları birleştirebilirsiniz: isinstance Bu alfabetik sırayla. Örneğin, isinstance(x, Number) İade True Dahili sayısal türler ve çeşitli NumPy skalerleri gibi birçok harici sayısal tür için.

Pratik bir örnekte, NumPy türleri Python'ın yerleşik türleriyle birlikte kullanılmıştır.NumPy'yi şu şekilde içe aktarırsanız: np ve ardından değerler üzerinde döngü oluşturun. 1, 1., -0.2, 1e8, np.int64(1), np.int0(10), np.int16(2), np.float64(10), np.complex64(10) hem de np.int32(89), arıyor isinstance(value, Number) Her biri için, hepsinin sayısal değer olarak sayıldığını göreceksiniz. Bu, her bir sınıf için uzun bir tür kontrolü zinciri yazmaktan sizi kurtarır.

O fazlalaştı isinstance Aşırı kullanıldığında kendisi de bir kod "kötü kokusu" olarak kabul edilir.Nesne yönelimli bir programda açık tip kontrolüne aşırı güvenmek, daha derin tasarım sorunlarına işaret edebilir. Bununla birlikte, hızlı hata ayıklama, keşif amaçlı komut dosyaları veya küçük yardımcı programlar için, tip kontrolü yapmak faydalı olabilir. numbers.Number Değişkenlerinizin gerçekten sayılar gibi davrandığını doğrulamak için güçlü ve pratik bir araçtır.

Genişletilmiş sayısal ekosistemler: NumPy ve özel türler

Python'ın temel yapısı yalnızca küçük bir genel amaçlı sayısal tür kümesi sunsa da, daha geniş ekosistem seçeneklerinizi büyük ölçüde genişletir.Özellikle NumPy, büyük diziler ve matrisler üzerinde verimli hesaplama için tasarlanmış çok daha fazla sayısal yöntem sunmaktadır.

NumPy, aşağıdakiler gibi sabit genişlikli tamsayı türleri tanımlar: numpy.int64, numpy.int32, numpy.int16 ve özel takma adlar gibi numpy.int0Bunlar, Fortran ve C gibi düşük seviyeli, sayısal odaklı dillerde bulunan türlere benzer; bu dillerde sayıların tam depolama boyutunu ve davranışını bilmek performans ve birlikte çalışabilirlik için çok önemlidir.

NumPy, tamsayıların yanı sıra aşağıdaki gibi türler de sunar: numpy.float64 hem de numpy.complex64Bunlar, diziler ve evrensel fonksiyonlarla (ufuncs) sorunsuz bir şekilde entegre olan diğer birçok türle birlikte, genellikle uygun ABC'lerin örnekleri olarak kaydedilir. numbers modül, bu yüzden kontroller yapılır numbers.Number Daha önce gösterildiği gibi çalışın.

Python'ın tasarımı, temel sayısal modeli kasıtlı olarak basit ve erişilebilir tutmuştur.Kullanıcıların onlarca farklı sayısal türü yönetmesini zorunlu kılmak yerine, üç temel sayısal türe (artı mantıksal değerler) odaklanır ve özel kütüphanelerin gerektiğinde bu repertuarı genişletmesini kolaylaştırır. Simülasyon yazılım şirketi tarafından oluşturulan gibi mühendislik odaklı bir ortam, doğal olarak bu genişletilmiş türlere ve kütüphanelere büyük ölçüde dayanacaktır.

Kendi sayısal sınıflarınızı oluştururken, aşağıdaki kalıpları takip edin. numbers hem de fractions Ekosisteme uyum sağlamanıza yardımcı olurUygun ABC sınıfını alt sınıflara ayırarak ve gerekli özel yöntemleri uygulayarak (__add__, __radd__, __mul__(vb.) Özel türleriniz, Python'ın operatörleri, yerleşik sayısal fonksiyonları ve diğer sayısal kütüphaneleriyle doğal bir şekilde etkileşime girebilir.

Özetle, sayısal Python, temiz bir temel tip sistemi, güçlü standart kütüphane modülleri ve zengin bir kütüphane ekosistemini bir araya getiriyor. NumPy gibi, basit aritmetik işlemlerden gelişmiş mühendislik hesaplamalarına rahatça geçebileceğiniz bir ortam yaratır. Tamsayıların, ondalık sayıların, karmaşık sayıların, özel değerlerin, yuvarlama kurallarının ve soyut sayısal sınıfların nasıl bir araya geldiğini içselleştirdiğinizde, kodunuz hakkında daha güvenli bir şekilde akıl yürütebilir, ince hatalardan kaçınabilir ve karşılaştığınız her sayısal görev için doğru araçları seçebilirsiniz.

İlgili Mesajlar: