第15章 常用模块

内置模块:Python官方提供了数量众多的模块。本章归纳一些常用模块,其他不常用的可以查询Python官方的API文档。

15.1 math模块

math模块中的函数只是整数和浮点,不包括复数,复数计算需要使用math模块。

15.1.1 舍入函数

 math.ceil(a)返回大于或等于a的最小整数

math.floor(a)返回小于或等于a的最大整数

Python还提供了一个内置函数round(a),该函数用来对a进行四舍五入计算。

15.1.2 幂和对数函数

 ๏ math模块提供的幂和对数相关函数如下:

๏ 对数运算。math.log(a[, base])返回以base为底的a对数;省略底数 base,是a自然对数。

๏ 平方根。math.sqrt(a)返回a的平方根。

๏ 幂运算。math.pow(a, b)返回a的b次幂的值。

15.1.3 三角函数 

๏ math.sin(a)。返回弧度a的三角正弦。

๏ math.cos(a)。返回弧度a的三角余弦。

๏ math.tan(a)。返回弧度a的三角正切。

๏ math.asin(a)。返回弧度a的反正弦。

๏ math.acos(a)。返回弧度a的反余弦。

๏ math.atan(a)。返回弧度a的反正切。

math.degrees(a):将弧度a转化为角度

math.radians(a):将角度a转换为弧度

\pi:math.pi

15.2 random 模块 

 random 模块生成随机数函数:

๏ random.random()。返回在范围大于等于0.0,且小于1.0中的随机浮点数。

๏ random.randrange(stop)。返回在范围大于等于0,且小于stop,步长为1随机整数。

๏ random.randrange(start, stop[, step])。返回在范围大于等于start, 且小于stop,步长为step随机整数。

๏ random.randint(a, b)。返回在范围大于等于a,且小于等于b之间的随机整数。

import random

# 0.0 <= x < 1.0随机数
print('0.0 <= x < 1.0随机数')
for i in range(0, 10):
    x = random.random()
    print(x)

# 0 <= x < 5随机数
print('0 <= x < 5随机数')
for i in range(0, 10):
    x = random.randrange(5)
    print(x, end=' ')

# 5 <= x < 10随机数
print()
print('5 <= x < 10随机数')
for i in range(0, 10):
    x = random.randrange(5,10)
    print(x, end=' ')

# 5 <= x <= 10随机数
print()
print('5 <= x <= 10随机数')
for i in range(0, 10):
    x = random.randint(5,10)
    print(x, end=' ')

15.3 datetime模块

Python官方提供的日期和时间模块主要有time和datetime模块。

time偏重于底层平台,模块中大多数函数会调用本地平台上的C链接库,因此有些函数运行的结果,在不同的平台上会有不同。

datetime模块对time模块进行了封装,提供了高级的API,重点介绍。

datetime模块中提供了几个类:

๏ datetime:包含时间和日期。

๏ date:只包含日期。

๏ time:只包含时间。

๏ timedelta:计算时间跨度。

๏ tzinfo:时区信息。

15.3.1 datetime、date和time类  

 datetime模块的核心类是datetime、date和time类。

1)datetime类

一个datetime对象可以表示日期和时间等信息,创建datetime对象的构造方法

datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)

year、mouth和day三个参数是不能省略;

tzinfo是时区参数,默认值是None表示不指定时区

除了tzinfo外,其他参数全部为合理范围内的整数。如果超出范围,会抛出ValueError

datetime类方法有以下几种:

๏ datetime.today():返回当前本地日期和时间。

๏ datetime.now(tz=None):返回指定时区的本地当前日期和时间,如果参数tz为None或未指定,则等同于today()。

๏ datetime.utcnow():返回当前UTC(UTC即协调世界时间,比GMT格林尼治标准时间更加精准)日期和时间。

๏ datetime.fromtimestamp(timestamp,tz=None):返回与UNIX时间戳(自UTC时间1970年1月1日00:00:00以来至现在的总秒数)对应的本地日期和时间。

๏ datetime.utcfromtimestamp(timestamp,tz=None):返回与UNIX时间戳对应的UTC日期和时间。

datetime.utcnow()与datetime.today()相比晚8个小时,因为datetime.today()是本地时间,是东八区时间或北京时间,本地时间比UTC时间早8个小时

同样,datetime.fromtimestamp()比datetime.utcfromtimestamp()也是早8个小时。

注意:Python时间戳单位是秒,所以会有小数部分。其他语言如Java单位是毫秒

2)date类

一个date对象可以表示日期等信息,创建date对象的构造方法

datetime.date(year, month, day)

year、mouth和day三个参数是不能省略;参数全部为合理范围内的整数。如果超出范围,会抛出ValueError

使用date需要导入datetime模块。

date类方法有以下几种:

๏ date.today():返回当前本地日期。

๏ date.fromtimestamp(timestamp):返回与UNIX时间戳对应的本地 日期。

 3)time类

一个time对象可以表示时间等信息,创建time对象的构造方法

datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None)

所有参数都是可选的,除了tzinfo外,其他参数全部为合理范围内的整数。如果超出范围,会抛出ValueError

使用time时需要导入datetime模块

 15.3.2 日期时间计算

如果想知道10天之后是哪一天,或者知道2018年1月1日前五周是哪一天,需要使用timedelta类,timedelta对象用于计算datetime、date和time对象时间间隔。

timedelta类构造方法:

datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

所有参数都是可选的,参数可以为整数或浮点数,可以为正数或负数。在timedelta内部只保存days(天)、seconds(秒)和microseconds(微秒)变量,所以其他参数milliseconds(毫秒)、minutes(分钟)和weeks(周)都应换算成days、seconds和microseconds三个参数。

使用timedelta对象可以精确到微秒,这里不再赘述。

15.3.3 日期时间格式化和解析

日期和时间需要进行格式化输出,使它符合当地人查看日期和时间的习惯。与日期时间格式化输出相反的操作为日期时间的解析。

当用户使用应用程序界面输入日期时,计算机能够读入的是字符串,经过解析这些字符串获得日期和时间对象。

日期时间格式化使用strftime()方法,datetime、date和time三个类都有一个实例方法strftime(format)

日期时间解析使用datetime.strptime(date_string,format)类方法,date和time没有strptimne()方法

strftime()和strptime()都有一个格式化参数format,用来控制日期时间的格式。

常用的日期和时间格式控制符:

 提示:表中的数字都是十进制数字。控制符会因平台不同有所区别,这是因为Python调用本地平台C库的strftime()函数而进行日期和时间格式化。事实上这些控制符是1989版C语言控制符,表中只列出了常用的控制符,更多控制符可以参考下面的网址:

https://docs.py-thon.org/3/library/datetime.html#strftime-strptime-behavior

 15.3.4 时区

datetime和time对象只是单纯表示本地日期和时间,没有时区信息。如果想带有时区信息,可以使用timezone类,它是tzinfo的子类,提供了UTC偏移时区的实现,timnezone构造方法:

datetime.timezone(offset, name=None)

offset是UTC偏移量,+8是东八区,北京在此时区;-5是西五区,纽约在此时区,0是零时区,伦敦在此时区。

name是时区名字,如Asia\Beijing,可省略。

 使用from import语句导入datetime模块,明确指定导入datetime、timezone和timedelta类,这样在使用时不必在类的前面再加datetime模块名了,使用简洁。想导入所有的类使用from datetime import*。

astimezone()是调整时区。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值