在正式学习面向对象编程之前,我们先讲一下怎么在代码中导入并调用现成的模组,也就是Python中的标准库。像我们之前介绍过的os模块就是其中之一,下面我将为大家分别介绍几个常用的标准库。
math 模块提供了许多对浮点数的数学运算函数,该模块下的函数返回值均为浮点数。我们使用import关键字来导入模组,再通过dir方法来获取math模组下的内容。
import math
print(dir(math))
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin',
'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees',
'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp',
'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt',
'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter',
'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh',
'tau', 'trunc', 'ulp']
此外我们还可以获取math模组本身的一些属性。
import math
print(id(math))
print(type(math))
print(math)
2827027040432
这里介绍几个math模组的常量和函数,能用运算符简单表示的就不列出来了。
import math
# math模组中的常量
print('e:', math.e)
print('π:', math.pi)
# math模组中的计算
# e的x次幂
x = 2
print('e的x次幂:', math.exp(x))
# y的向上取整
y = 1.5
print('y的向上取整:', math.ceil(y))
# y的向下取整
print('y的向下取整:', math.floor(y))
# y的x次幂
print('y的x次幂:', math.pow(y, x))
# z从弧度制转为角度制
z = math.pi/2
print('z从弧度制转为角度制:', math.degrees(z))
# z从角度制转为弧度制
z = 90
print('z从角度制转为弧度制:', math.radians(z))
# a的绝对值
a = -2
print('a的绝对值:', math.fabs(a))
# b的阶乘
b = 3
print('b的阶乘:', math.factorial(b))
# x和b的最大公因数
print('x和b的最大公因数:', math.gcd(x, b))
# d的平方根
d = 4
print('d的平方根:', math.sqrt(d))
# 以x为底,d的对数
print('以x为底,d的对数:', math.log(d, x))
# 以10为底,d的对数(常用对数)
print('以10为底,d的对数(常用对数):', math.log10(d))
# 以e为底,d的对数(自然对数)
print('以e为底,d的对数(自然对数):', math.log(d))
e: 2.718281828459045
π: 3.141592653589793
e的x次幂: 7.38905609893065
y的向上取整: 2
y的向下取整: 1
y的x次幂: 2.25
z从弧度制转为角度制: 90.0
z从角度制转为弧度制: 1.5707963267948966
a的绝对值: 2.0
b的阶乘: 6
x和b的最大公因数: 1
d的平方根: 2.0
以x为底,d的对数: 2.0
以10为底,d的对数(常用对数): 0.6020599913279624
以e为底,d的对数(自然对数): 1.3862943611198906
此外还可以表示三角函数。
import math
x = math.pi
y = 1
print(math.sin(x))
print(round(math.sin(x)))
print(math.cos(x))
print(math.tan(x))
print(math.asin(y))
print(math.acos(y))
print(math.atan(y))
需要注意math中的反三角函数不需要写成‘arcsin’的形式,只需要写成asin即可。另外Python在处理浮点数运算时会出现极小的误差,具体原因可以查看这篇文章浮点精度(float、double)运算不精确的原因。如果不想要输出存在误差的结果,我们可以用之前学过的round内置函数来消除它。
1.2246467991473532e-16
0
-1.0
-1.2246467991473532e-16
1.5707963267948966
0.0
0.7853981633974483
time 模块提供了处理时间的函数,它以时间元组来记录和储存时间。
索引 | 元素 | 含义 | 数值 |
---|---|---|---|
0 | tm_year | 年份 | 公元纪年 |
1 | tm_mon | 月份 | 1~12 |
2 | tm_mday | 日期 | 1~31 |
3 | tm_hour | 小时 | 0~23 |
4 | tm_min | 分钟 | 0~59 |
5 | tm_sec | 秒 | 0~59 |
6 | tm_wday | 星期 | 0~6 (从周一开始) |
7 | tm_yday | 天数 | 一年中的第几天,1~366 |
8 | tm_isdst | 夏令时 | 是否为夏令时:1(夏令时)、0(不是夏令时)、-1(未知),默认 -1 |
补充一点关于夏令时的知识:夏令时也叫夏时制,又称“日光节约时制”和“夏令时间”,是一种为节约能源而人为规定地方时间的制度,在这一制度实行期间所采用的统一时间称为“夏令时间”。一般在天亮早的夏季人为将时间调快一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。
import time
# 获取当前时间
now_time = time.localtime(time.time())
print("现在时间是:", now_time)
# 格式化时间
now_time1 = time.asctime(time.localtime(time.time()))
print("现在时间是:", now_time1)
现在时间是: time.struct_time(tm_year=2024, tm_mon=1, tm_mday=15, tm_hour=17, tm_min=15, tm_sec=7, tm_wday=0, tm_yday=15, tm_isdst=0)
现在时间是: Mon Jan 15 17:15:07 2024
注意在格式化时间中。每一项字符分别代表星期、月份、该月的第几天、时间和年份。
random 模块主要用于生成各种分布的随机数,在数据分析和建模中很常用。不过random模块生成的是伪随机数,它是用确定性的算法计算出来自[0,1]均匀分布的随机数序列。并不真正的随机,但具有类似于随机数的统计特征,如均匀性、独立性等。在计算伪随机数时,若使用的初值(种子)不变,那么伪随机数的数序也不变。
import random
random.seed(1)
# 随机数种子编号,用相同编号的种子生成的随机数一致
print(random.random())
# 生成一个[0,1)区间内随机数
random.seed(1)
print(random.random())
# 种子编号一致,生成的随机数一致
random.seed()
print(random.random())
# 默认种子编号,生成的随机数不一致
print(random.randint(5, 10))
# 在[5,10]区间上生成一个随机数,要求闭区间两侧为整数
print(random.randrange(2, 10, 2))
# 前两个参数为区间两端,后一个参数为步长,适用于选奇偶数
print(random.gauss(1, 0))
# 遵从均值为1,标准差为0的高斯正态分布
print(random.expovariate(2))
# 遵从均值为1/2的指数分布
list1 = range(1, 10)
print(random.sample(list1, 5))
# 从序列list1随机抽取5个数字,这也是生成多个随机数的常用方法
print(random.betavariate(1, 1))
# 贝塔分布,第一个参数是α,第二个是β
print(random.gammavariate(1, 1))
# 伽马分布,第一个参数是α,第二个是β
0.13436424411240122
0.13436424411240122
0.21235278740282482
5
6
1.0
0.4480595130642667
[9, 5, 6, 1, 3]
0.6208966857878386
0.8193240193344321
以上就是Python中几个比较常用的标准库了,还剩下一个用于编写正则表达式的re模块,会在下一篇文章中介绍给大家,感谢观看。