Pythonda **, pow va math.pow

Pythondagi uchala funksiya ham birorta sonning darajasini hisoblash uchun ishlatiladi lekin bir-biridan juda katta farq qiladi.


Pythonda sonlarni saqlashning bir nechta usullari mavjud bo‘lib, asosiylari: int, float, Decimal va Fraction. int bu butun sonlar uchun bo‘lsa, float bu haqiqiy sonlar uchundir. Decimal aniq chegaralangan haqiqiy sonlar uchun bo‘lsa, Fraction kasr sonlarni saqlash uchun qo‘llaniladi.


pow va math.pow funksiyasining eng katta asosiy farqi, math.pow funksiyasi faqat float turidagi sonlar bilan ishlaydi. pow esa qolgan son turlari bilan ham ishlay oladi. Masalan:

pow(3, 5) = 243
math.pow(3, 5) = 243.0

pow(1.2, 2.3) = 1.5209567545525315
math.pow(1.2, 2.3) = 1.5209567545525315


pow(Decimal('10'), 2) = Decimal('100')
math.pow(Decimal('10'), 2) = 100.0

pow(Fraction('2/3'), 3) = Fraction(8, 27)
math.pow(Fraction('2/3'), 3) = 0.2962962962962962


Ko‘rib turganingizdek math.pow natijani har doim float turiga o‘tkazib hisoblayapti.


** operatori aslida pow funksiyasining dastlabki ikkita parametri qiymatiga teng. Ya'ni

a ** b = pow(a, b)


Lekin pow da 3-parametr ham mavjud bo‘lib u quyidagi ma'noni anglatadi:

(a ** b) % c = pow(a, b, c) 


Ya'ni bitta sonning darajasi qiymatini, uchinchi songa bo‘lgandagi qoldig'ini hisoblaydi. Faqat shunga o‘xshash vaziyatlarda pow(a, b, c) ni ishlating. Chunki ushbu pow(a, b, c) quyidagi (a ** b) % c dan ancha tez va xotiradan kam joy oladi.

Ushbu sahifaga havola: https://itboom.uz/i16/