6.1 numbers--数值抽象基类
Posted caimouse
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6.1 numbers--数值抽象基类相关的知识,希望对你有一定的参考价值。
6. 数值和数学库
本库主要提供了数值和数学相关的函数处理以及数据类型。numbers模块定义了抽象的数值类型,math和cmath模块主要包括不同的数学函数,比如用来计算浮点数和复数。decimal模块支持十进制数值表示,可以用任何精度进行运算。
6.1 numbers--数值抽象基类
本模块主要按文档(PEP 3141)定义了数值抽象基类。
class numbers.Number
数值类的基类,如果你只是想检查一个参数x是否是Number类型,可以使用函数isinstance(x, Number)来检查。
6.1.1 数值的基类
class numbers.Complex
本类是复数的抽象类,包括了内置类型复数的操作。
real
复数的实部。
imag
复数的虚部。
conjugate()
复数的共轭复数。
class numbers.Real
复数类型里的实部类,主要针对实数的操作运算。
比如转换float、math.trunc()、round()、math.floor()、math.ceil()、divmod()、//、%、<、<=、>和>=。
class numbers.Rational
Real类型的子类。
numerator
抽象基类。
denominator
抽象基类。
class numbers.Integral
Rational的子类型,增加转换int的功能。
6.2 math--数学函数
本模块总是可以使用的,因为它主要从C标准来定义的数学函数库转换过来。但这些函数不能使用来处理复数,如果需要处理复数,要使用cmath模块里相同的函数。分成两个模块的原因,就是有很多人不需要学习复数,就使用math模块就可以了。在本模块里除了说明返回值的类型之外,否则所有返回值的类型都是float浮点数。
6.2.1 数值理论和数值表示
math.ceil(x)
返回大于等于x的最小整数。如果x不是浮点数,直接使用x.__ceil__()函数返回整数值。
例子:
#python 3.4
import math
n = math.ceil(2.5)
print(n)
n = math.ceil(3)
print(n)
n = math.ceil(3.0)
print(n)
n = math.ceil(3.1)
print(n)
结果输出如下:
3
3
3
4
math.copysign(x, y)
返回一个浮点数,绝对值等于x,正负号取决于y的正负号。
例子:
#python 3.4
import math
n = math.copysign(2.5, -0.0)
print(n)
n = math.copysign(-3, 0.0)
print(n)
n = math.copysign(3.0, -2.0)
结果输出如下:
-2.5
3.0
-3.0
4
math.fabs(x)
返回x的绝对值。
例子:
#python 3.4
import math
n = math.fabs(2.5)
print(n)
n = math.fabs(-3)
print(n)
n = math.fabs(-3.8)
print(n)
结果输出如下:
2.5
3.0
3.8
math.factorial(x)
返回x的阶乘。如果x不是一个整数或负数,会抛出异常ValueError。
例子:
#python 3.4
import math
n = math.factorial(2)
print(n)
n = math.factorial(5)
print(n)
n = math.factorial(8)
print(n)
结果输出如下:
2
120
40320
math.floor(x)
返回比x小于或者等于的最大整数。如果x不是一个浮点数,直接返回一个整数。
例子:
#python 3.4
import math
n = math.floor(2.1)
print(n)
n = math.floor(2.9)
print(n)
n = math.floor(2)
print(n)
结果输出如下:
2
2
2
math.fmod(x, y)
返回C库里的x对y取模。与Python里的x % y的值是有可能存在差异。因此本函数主要使用在浮点数的取模,而Python里 x % y一般用来是整数的取模运算。
例子:
#python 3.4
import math
n = math.fmod(2.1, 2)
print(n)
n = math.fmod(6.9, 2)
print(n)
n = math.fmod(8, 3)
print(n)
结果输出如下:
0.10000000000000009
0.9000000000000004
2.0
math.frexp(x)
把一个数分解成尾数和指数(m, e)。等同于x = m* 2**e。
例子:
#python 3.4
import math
n = math.frexp(2)
print(n)
n = math.frexp(3)
print(n)
n = math.frexp(4)
print(n)
结果输出如下:
(0.5, 2)
(0.75, 2)
(0.5, 3)
math.fsum(iterable)
统计迭代器iterable里有浮点数值,计算和。
例子:
#python 3.4
import math
l = [2, 3, 4, 5, 6]
n = math.fsum(l)
print(n)
结果输出如下:
20.0
math.isfinite(x)
判断x是否有限大的值。比如无穷大的值或Nan返回False,否则返回True。
例子:
#python 3.4
import math
n = math.isfinite(1.0)
print(n)
n = math.isfinite(float(‘NaN‘))
print(n)
结果输出如下:
True
False
math.isinf(x)
测试x是否无限大的值。
例子:
#python 3.4
import math
n = math.isinf(1.0)
print(n)
n = math.isinf(float(‘inf‘))
print(n)
结果输出如下:
False
True
math.isnan(x)
判断x是否一个非数字的数。
例子:
#python 3.4
import math
n = math.isnan(1.0)
print(n)
n = math.isnan(float(‘inf‘))
print(n)
n = math.isnan(float(‘NaN‘))
print(n)
结果输出如下:
False
False
True
math.ldexp(x, i)
计算值x乘以2的次幂的值。等同于 x* (2**i)。
例子:
#python 3.4
import math
n = math.ldexp(1.0, 2)
print(n)
n = math.ldexp(2.0, 2)
print(n)
结果输出如下:
4.0
8.0
math.modf(x)
分解x的值为整数和小数部分。
例子:
#python 3.4
import math
n = math.modf(6.0)
print(n)
n = math.modf(3.14)
print(n)
结果输出如下:
(0.0, 6.0)
(0.14000000000000012, 3.0)
math.trunc(x)
返回实数x的整数部分。
例子:
#python 3.4
import math
n = math.trunc(6.9)
print(n)
n = math.trunc(3.14)
print(n)
结果输出如下:
6
3
6.2.2 幂与对数的操作函数
math.exp(x)
返回e**x的值。
例子:
#python 3.4
import math
n = math.exp(6)
print(n)
n = math.exp(3.14)
print(n)
结果输出如下:
403.4287934927351
23.103866858722185
math.expm1(x)
返回e**x - 1的值。
例子:
#python 3.4
import math
n = math.expm1(6)
print(n)
n = math.expm1(3.14)
print(n)
结果输出如下:
402.4287934927351
22.103866858722185
math.log(x[, base])
一个参数输入时,直接返回x的自然对数。如果两个参数输入,则返回以base为底的对数。
例子:
#python 3.4
import math
n = math.log(6)
print(n)
n = math.log(3.14, 10)
print(n)
结果输出如下:
1.791759469228055
0.4969296480732149
math.log1p(x)
计算1+x的自然对数。
例子:
#python 3.4
import math
n = math.log1p(6)
print(n)
n = math.log1p(3.14)
print(n)
结果输出如下:
1.9459101490553132
1.420695787837223
math.log2(x)
返回2为底的x对数值。
例子:
#python 3.4
import math
n = math.log2(6)
print(n)
n = math.log2(3.14)
print(n)
结果输出如下:
2.584962500721156
1.6507645591169022
math.log10(x)
返回以10为底的x对数值。
例子:
#python 3.4
import math
n = math.log10(6)
print(n)
n = math.log10(3.14)
print(n)
结果输出如下:
0.7781512503836436
0.49692964807321494
math.pow(x, y)
返回以x为底的y次幂的值。比较特别的是pow(1.0, x)和pow(x, 0.0)都是返回1.0。如果是其它没有定义的值,就抛出异常ValueError。
例子:
#python 3.4
import math
n = math.pow(6, 2)
print(n)
n = math.pow(3.14, 2)
print(n)
结果输出如下:
36.0
9.8596
math.sqrt(x)
返回x的平方根。
例子:
#python 3.4
import math
n = math.sqrt(6)
print(n)
n = math.sqrt(16)
print(n)
结果输出如下:
2.449489742783178
4.0
6.2.3 三角的操作函数
math.acos(x)
返回反余弦函数,单位是弧度。
例子:
#python 3.4
import math
n = math.acos(-1.0)
print(n)
n = math.acos(0.5)
print(n)
结果输出如下:
3.141592653589793
1.0471975511965979
math.asin(x)
返回反正弦函数,单位为弧度。
例子:
#python 3.4
import math
n = math.asin(-1.0)
print(n)
n = math.asin(0.5)
print(n)
结果输出如下:
-1.5707963267948966
0.5235987755982989
math.atan(x)
返回正切函数的值,单位为弧度。
例子:
#python 3.4
import math
n = math.atan(-1.0)
print(n)
n = math.atan(0.5)
print(n)
结果输出如下:
-0.7853981633974483
0.4636476090008061
math.atan2(y, x)
atan2(y,x)所表达的意思是坐标原点为起点,指向(x,y)的射线在坐标平面上与x轴正方向之间的角的角度。
例子:
#python 3.4
import math
n = math.atan2(1.0, 1.0)
print(n)
n = math.atan2(1.0, 0)
print(n)
结果输出如下:
0.7853981633974483
1.5707963267948966
math.cos(x)
返回余弦函数的值,x的单位为弧度。
例子:
#python 3.4
import math
n = math.cos(3.14/2)
print(n)
n = math.cos(3.14/4)
print(n)
结果输出如下:
0.0007963267107332633
0.7073882691671998
math.hypot(x, y)
返回原点到指定坐标点(x, y)的距离。
例子:
#python 3.4
import math
n = math.hypot(3, 4)
print(n)
n = math.hypot(5, 5)
print(n)
结果输出如下:
5.0
7.0710678118654755
math.sin(x)
返回正弦函数的值。
例子:
#python 3.4
import math
n = math.sin(3.14/4)
print(n)
n = math.sin(3.14/2)
print(n)
结果输出如下:
0.706825181105366
0.9999996829318346
math.tan(x)
返回正切函数的值。
例子:
#python 3.4
import math
n = math.tan(3.14/4)
print(n)
n = math.tan(3.14/2)
print(n)
结果输出如下:
0.9992039901050427
1255.7655915007897
6.2.4 角度转换函数
math.degrees(x)
转换弧度到角度。
例子:
#python 3.4
import math
n = math.degrees(3.14/4)
print(n)
n = math.degrees(3.14/2)
print(n)
结果输出如下:
44.97718691776962
89.95437383553924
math.radians(x)
转换角度为弧度。
例子:
#python 3.4
import math
n = math.radians(90)
print(n)
n = math.radians(45)
print(n)
结果输出如下:
1.5707963267948966
0.7853981633974483
6.2.5 双曲线的函数
math.acosh(x)
返回反双曲余弦函数的值。
例子:
#python 3.4
import math
n = math.acosh(90)
print(n)
n = math.acosh(45)
print(n)
结果输出如下:
5.192925985263684
4.499686190671499
math.asinh(x)
返回反双曲线正弦函数的值。
例子:
#python 3.4
import math
n = math.asinh(90)
print(n)
n = math.asinh(45)
print(n)
结果输出如下:
5.192987713658941
4.49993310426429
math.atanh(x)
返回反双曲正切函数的值。
例子:
#python 3.4
import math
n = math.atanh(0.9)
print(n)
n = math.atanh(0.8)
print(n)
结果输出如下:
1.4722194895832204
1.0986122886681098
math.cosh(x)
返回双曲余弦值。
例子:
#python 3.4
import math
n = math.cosh(0.9)
print(n)
n = math.cosh(0.8)
print(n)
结果输出如下:
1.4330863854487743
1.3374349463048447
math.sinh(x)
返回双曲正弦函数的值。
例子:
#python 3.4
import math
n = math.sinh(0.9)
print(n)
n = math.sinh(0.8)
print(n)
结果输出如下:
1.0265167257081753
0.888105982187623
math.tanh(x)
返回双曲正切函数的值。
例子:
#python 3.4
import math
n = math.tanh(0.9)
print(n)
n = math.tanh(0.8)
print(n)
结果输出如下:
0.7162978701990245
0.664036770267849
6.2.6 一些特别的函数
math.erf(x)
返回误差函数的值。
例子:
#python 3.4
import math
n = math.erf(0.9)
print(n)
n = math.erf(10)
print(n)
结果输出如下:
0.796908212422832
1.0
math.erfc(x)
返回余补误差函数的值。
例子:
#python 3.4
import math
n = math.erfc(0.9)
print(n)
n = math.erfc(10)
print(n)
结果输出如下:
0.20309178757716795
2.0884875837625433e-45
math.gamma(x)
伽玛函数(Gamma Function)作为阶乘的延拓,是定义在复数范围内的亚纯函数。
例子:
#python 3.4
import math
n = math.gamma(0.9)
print(n)
n = math.gamma(5)
print(n)
结果输出如下:
1.068628702119319
24.0
math.lgamma(x)
返回x的gamma函数的绝对值,然后对绝对值取自然对数的值。
例子:
#python 3.4
import math
n = math.lgamma(0.9)
print(n)
n = math.lgamma(5)
print(n)
结果输出如下:
0.0663762397347431
3.178053830347945
6.2.7 数学常用的常量
math.pi
返回圆周率常量的值。
例子:
#python 3.4
import math
n = math.pi
print(n)
结果输出如下:
3.141592653589793
math.e
返回数学上常量e的值。
例子:
#python 3.4
import math
n = math.e
print(n)
结果输出如下:
2.718281828459045
蔡军生 QQ:9073204 深圳
以上是关于6.1 numbers--数值抽象基类的主要内容,如果未能解决你的问题,请参考以下文章
python abstractmethod 与另一个基类破坏了抽象功能