Python从入门到精通 第九章(Python标准库)

一、标准库简介

有一部分Python计算生态随Python安装包一起发布,用户可以随时使用,被称为Python标准库。受限于Python安装包的设定大小,标准库的数量不会很多,大概在270个左右,下面介绍其中的3个。

二、turtle库

1、turtle库概述

(1)turtle库是Python重要的标准库之一,它能够进行基本的图形绘制。

(2)turtle库绘制图像有一个基本框架:一个小海龟在坐标系中爬行,其爬行轨迹形成了绘制图形。

①对于小海龟来说,有“前进”、“后退”、“旋转”等爬行行为,对坐标系的探索也通过“前进方向”、“后退方向”、“左侧方向”和“右侧方向”等小海龟自身角度方位来完成。

刚开始绘制时,小海龟位于画布正中央,此处坐标为(0,0),前进方向为水平右方

Python从入门到精通 第九章(Python标准库)_第1张图片

(3)使用import保留字对turtle库的引用有如下几种方式:

①import turtle:对turtle库中函数调用采用“turtle.<函数名>()”形式。

②from turtle import *:对turtle库中函数调用直接采用“<函数名>()”形式。

③from turtle import <函数名>:对turtle库中函数调用直接采用“<函数名>()”形式,但只能使用引用过的指定函数。

④import turtle as t:对turtle库中函数调用采用“t.<函数名>()”形式。(给turtle赋予别名t,t可以使用其它别名)

2、窗体函数

(1)函数使用方式:Turtle.setup(width,height,startx,starty)。

(2)作用:设置主窗体大小和位置。

(3)参数:

①width——窗口宽度。如果值是整数,表示的是像素值;如果值是小数,表示窗口宽度与屏幕的比例。

②height——窗口高度。如果值是整数,表示的是像素值;如果值是小数,表示窗口宽度与屏幕的比例。

③startx——窗口左侧与屏幕左侧的像素距离。如果值是None,窗口位于屏幕水平中央。

④starty——窗口左侧与屏幕顶部的像素距离。如果值是None,窗口位于屏幕垂直中央。

Python从入门到精通 第九章(Python标准库)_第2张图片

3、画笔状态函数

函数

描述

pendown()

放下画笔(笔接触屏幕),之后,移动画笔将绘制形状

penup()

提起画笔(笔不接触屏幕),之后,移动画笔不绘制形状

pensize(width)

设置画笔宽度,当无参数输入时返回当前画笔宽度

pencolor(colorstring)或pencolor((r,g,b))

pencolor(colorstring):设置画笔颜色,当无参数输入时返回当前画笔颜色(colorstring是表示颜色的字符串,如“red”表示红色)

pencolor((r,g,b)):设置画笔颜色,(r,g,b)是颜色对应的RGB的0~1数值,例如(1,0.65,0)

color(colorstring1,colorstring2)或color((r1,g1,b1),(r2,g2,b2))

color(colorstring1,colorstring2):设置画笔颜色和背景颜色,当无参数输入时返回当前画笔和背景颜色(colorstring是表示颜色的字符串,如“blue”表示蓝色)

color((r1,g1,b1),(r2,g2,b2)):设置画笔颜色,(r,g,b)是颜色对应的RGB的0~1数值

begin_fill()

设置填充区域色彩,无参数,在开始绘制拟填充背景图形前调用

end_fill()

与begin_fill配对使用,无参数,在结束绘制拟填充背景图形前调用

filling()

返回当前图形背景颜色的填充状态,如果当前代码在begin_fill()和end_fill()之间将返回True,否则返回False

clear()

清空当前海龟对象绘制的图形,但不改变其位置和角度

reset()

清空当前绘图窗口,海龟对象绘图位置和角度回归初始状态

screensize(width,height,bgcolor)

设置当前画布窗口的宽度为width(以像素为单位),高度为height(以像素为单位),背景颜色为bgcolor(表示颜色的字符串或颜色对应的RGB的0~1数值);如果不给出参数,则以元组形式返回当前画布窗口的宽度和高度(weight,height)

hideturtle()

隐藏画笔的turtle形状

showturtle()

显示画笔的turtle形状

isvisible()

如果turtle画笔的形状显示,则返回True,否则返回False

write(str,font=None)

根据设置的字体font形式(font是由字体名称、字体尺寸和字体类型3个元素构成的元组,可选),将字符串str显示在画布上

4、画笔运动函数

函数

描述

forward(distance)

控制小海龟(画笔)向当前行进方向移动distance个像素(当distance为负数时,表示向相反方向移动)

backward(distance)

控制小海龟(画笔)向当前行进的反方向移动distance个像素(当distance为负数时,表示向前进方向移动)

right(angle)

改变画笔行进方向为当前方向右侧angle角度(angle为整数值,是相对当前行进方向的角度值)

left(angle)

改变画笔行进方向为当前方向左侧angle角度(angle为整数值,是相对当前行进方向的角度值)

goto(x,y)

移动画笔到画布中的特定位置,该位置以坐标(x,y)方式表达,如果当前画笔处于落下状态,则绘制当前位置到目标位置的线条

setx(x)

修改画笔的横坐标为x,纵坐标不变

srty(y)

修改画笔的纵坐标为y,横坐标不变

setheading(angle)

设置小海龟当前行进方向为angle,该角度是绝对方向角度值(如下图所示,该angle与当前行进方向无关)

home()

移动画笔到坐标系原点,画笔方向改为初始方向

circle(radius,e)

根据半径radius绘制角度为extent的弧形

dot(size,color)

绘制一个带有背景色color、直径为size的原点

undo()

撤销绘图的最后一次动作

speed(s)

设置画笔的绘制速度,参数为0~10,0表示没有绘制动作,1~10逐步增加绘制速度,超过10则等同于参数为0

Python从入门到精通 第九章(Python标准库)_第3张图片

5、示例

import turtle
turtle.pensize(3)  # 设置画笔宽度为3
# 绘制红色三角形
turtle.penup()  # 提笔,画笔离开屏幕
turtle.goto(-200,-50)  # 移动画笔到目标位置
turtle.pendown()  # 画笔接触屏幕
turtle.begin_fill()  # 开启填充模式,一旦画出闭合图形,用当前填充区域颜色进行填充
turtle.color("red")  # 设置画笔和填充区域的颜色
turtle.circle(40, steps=3)
turtle.end_fill()  # 结束填充模式
turtle.penup()  # 提笔,画笔离开屏幕

# 显示绿色文字
turtle.color("green")
turtle.penup()  # 提笔,画笔离开屏幕
turtle.goto(-100,-50)  # 移动画笔到目标位置
turtle.pendown()  # 画笔接触屏幕
turtle.write(("红色三角形"),font=("Times",15,"bold"))  # 写字
turtle.hideturtle()  # 隐藏画笔
turtle.done()

Python从入门到精通 第九章(Python标准库)_第4张图片

三、random库

1、random库概述

(1)Python提供的random库可用于产生各种分布的伪随机数序列。

(2)random库提供了不同类型的随机数函数,其中最基本的函数是random.random(),它生成一个[0.0,1.0)之间的随机小数,所有其它随机函数都是基于这个函数扩展而来。

2、random库的常用函数

函数

描述

seed(a=None)

为随机数序列确定种子,参数为随机数种子(整数或浮点数,默认值为当前系统时间)

random()

生成一个[0.0,1.0)之间的随机小数

randint(a,b)

生成一个[a,b]之间的随机整数

getrandbits(k)

生成k比特长度的随机整数,其中k是二进制位数(返回的结果是十进制整数,该数由k位的二进制随机数转换而得)

randrange(start,stop,step)

生成一个[start,stop)之间以step为步数的随机整数,使用方法与range类似(step可选),任意两个使用同一个随机数种子生成的随机数相减,得到的结果必为step的整数倍

uniform(a,b)

生成一个[a,b]之间的随机小数

choice(seq)

从序列seq(比如列表、元组、字符串)中随机返回一个元素

shuffle(seq)

将序列seq(比如列表)中的元素排列打乱(由于元组不可变,因此不能作为该函数的参数)

sample(pop,k)

从pop表示的组合数据类型(比如列表、元组、字符串、集合)中随机选取k个元素,以列表类型返回(pop中所含的元素要不少于k个)

四、time库

1、time库概述

(1)time库是Python提供的处理时间标准库,它提供系统级精确计时器的计时功能,可以用来分析程序性能,也可以暂停程序运行时间。

(2)time库的功能主要分为3个方面:时间处理、时间格式化和计时。

2、时间处理函数

(1)使用“time.time()”可获取当前时间戳。

(2)使用“time.gmtime(secs)”可获取时间戳secs对应的struct_time对象(其元素构成如下表所示),如没有参数则默认为当前时间戳。

(3)使用“time.localtime(secs)”可获取时间戳secs对应的本地时间的struct_time对象。

(4)使用“time.ctime(secs)”可获取时间戳secs对应的易读字符串表示,内部会调用time.localtime()函数以输出当地时间,如没有参数则默认为当前时间戳。

下标

属性

0

tm_year

年份(整数)

1

tm_mon

月份(1~12)

2

tm_mady

日期(1~31)

3

tm_hour

小时(0~23)

4

tm_min

分钟(0~59)

5

tm_sec

秒(0~59)

6

tm_wday

星期(0~6,0表示周一,以此类推)

7

tm_yday

该年的第几天(1~366)

8

tm_isdst

是否是夏令时(0表示否,1表示是,-1表示未知)

Python从入门到精通 第九章(Python标准库)_第5张图片

3、时间格式化函数

(1)使用“time.mktime(t)”将struct_time对象t转换为时间戳(t代表当地时间)。

(2)使用“time.strftime(t)”几乎可以以任何通用格式输出时间,该方法利用一个格式字符串对时间格式进行表示(该方法的格式化控制符如下表所示)。

格式化字符

日期/时间

取值

%Y

年份

0001~9999

%m

月份

01~12

%B

月名

January~December

%b

月名缩写

Jan~Dec

%d

日期

01~31

%A

星期

Monday~Sunday

%a

星期缩写

Mon~Sun

%H

小时(24h制)

00~23

%I

小时(12h制)

01~12

%p

上午/下午

AM,PM

%M

分钟

00~59

%S

00~59

Python从入门到精通 第九章(Python标准库)_第6张图片

(3)strptime方法与strftime方法完全相反,用于提取字符串中的时间来生成将struct_time对象。

Python从入门到精通 第九章(Python标准库)_第7张图片

4、计时函数

(1)计时主要包括3个函数:sleep、monotonic、perf_counter。

(2)以1000万次循环为主题,模拟实际程序的核心模块(coreLoop),用sleep来模拟实际程序的其它模块(otherLoop)。

import time


def coreLoop():
    limit = 10 ** 7
    while limit > 0:
        limit = limit - 1


def otherLoop1():
    time.sleep(0.2)  # 程序暂停0.2秒


def otherLoop2():
    time.sleep(0.4)  # 程序暂停0.4秒


startTime = time.localtime()  # 程序开始运行的时刻
print('程序开始时刻:', time.strftime('%Y-%m-%d %H:%M:%S', startTime))
startPerfCounter = time.perf_counter()  # 此时需要测试的主体部分开始运行,启动计时器(从0开始计时)
otherLoop1()  # 运行模块1
otherLoop1PerfCounter = time.perf_counter()  # 模块1运行完成,采集当前计时器的计时
otherLoop1Perf = otherLoop1PerfCounter - startPerfCounter  # 结合主体部分开始运行的时间,计算得出模块1的运行时间
coreLoop()  # 运行核心模块
coreLoopPerfCounter = time.perf_counter()  # 核心模块运行完成,采集当前计时器的计时
coreLoopPerf = coreLoopPerfCounter - otherLoop1PerfCounter  # 结合模块1运行结束时的时间,计算得出核心模块的运行时间
otherLoop2()  # 运行模块2
otherLoop2PerfCounter = time.perf_counter()  # 模块2运行完成,采集当前计时器的计时
otherLoop2Perf = otherLoop2PerfCounter - coreLoopPerfCounter  # 结合核心模块开始运行的时间,计算得出模块2的运行时间
endPerfCounter = time.perf_counter()  # 主体部分运行结束,采集当前计时器的计时
totalPerf = endPerfCounter - startPerfCounter  # 结合主体部分开始运行的时间,计算得出主体部分的运行时间
endTime = time.localtime()  # 程序结束运行的时刻
print("模块1的运行时间是:%f秒" % otherLoop1Perf)
print("核心模块的运行时间是:%f秒" % coreLoopPerf)
print("模块2的运行时间是:%f秒" % otherLoop2Perf)
print("程序运行总时间是:%f秒" % totalPerf)
print("程序结束时刻:", time.strftime("%Y-%m-%d %H:%M:%S", endTime))

Python从入门到精通 第九章(Python标准库)_第8张图片

你可能感兴趣的:(Python从入门到精通,python,开发语言)