模块就是程序。每个扩展名为.py的Python程序都是一个独立的模块(Module),模块能定义函数、类和变量,让你能够有逻辑地组织你的Python代码段。
1.调用模块
import <模块> [as <别名>]
:将模块中的函数等名称导入当前程序,在调用模块中的函数的时候,需要加上模块的命名空间,可以给导入的命名空间替换一个新的名字,引用方法:<模块>.<名称>
from <模块> import <函数>
:引入模块中的某个函数,调用时不需要再加上命名空间
2.几个时间模块
①datetime模块
- 可对date、time、datetime三种时间模式进行单独管理
datetime.date()
:处理日期(年月日)datetime.time()
:处理时间(时分秒、毫秒)datetime.datetime()
:处理日期+时间datetime.timedelta()
:处理时段(时间间隔)- 获取当前日期和时间,可以使用strftime或datetime.datetime.isoformat()格式化
datetime.date.today()
:只获取日期datetime.datetime.now()
:获取日期+具体到微秒的时间- 时间戳:是指格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。
timetuple
函数:将时间转换成struct_time格式time.mktime
函数:把timetuple得出来的结果用秒数来表示时间戳的浮点数datetime.date.fromtimestamp()
:将时间戳转换成日期- 用
timedelta()
方法来实现时间的加减法
注:print会自动输出固定格式
②calendar模块
- 制作电子日历
calendar.calendar(<年>)
;calendar.month(<年>,<月>)
:都是返回多行字符串calendar.prmonth(<年>,<月>)
;calendar.prcal(<年>)
:相当于print (calendar.month (<年>,<月>)),正常的日历- 使用
calendar.monthcalendar()
将日历列表化 - 返回某一年的某一个月份日历,是一个嵌套列表
- 最里层的列表含有七个元素,代表一周(从周一到周日)
- 如果没有本月的日期,则为0
- 判别闰年。普通闰年:能被4整除但不能被100整除的年份;世纪闰年:能被400整除的年份
- 计算某月共有多少天,从周几开始:从0开始,依次为周一、周二…;计算某天是周几:返回值为0~6,依次对应的是周一到周日
③time模块
time.time()
方法获取时间戳time.asctime()
和time.ctime()
:获取当前时间分别对应:周几、月、日、时分秒、年time.asctime()
还可以将元组数据转化为日期,元组分别对应年、月、日、时、分、秒、周几、一年中的第几天、是否为夏令时间。- 利用索引获取时间信息:
localtime()
- 让程序运行到某处便暂停几秒:
time.sleep()
时间戳的用处:计算程序花了多长时间
运行时可以很明显的感觉到停顿
3.几个算术模块
①math模块和cmath模块
math模块支持浮点数运算,cmath模块支持复数运算。
math.sin()/math.cos()/math.tan()
:三角函数math.pi
:π = 3.14159…math.log(x,a)
/cmath.log(x,a)
:以a为底的x的对数math.pow(x,y)
:x的y次方cmath.polar()
:极坐标;cmath.rect()
:笛卡尔坐标cmath.exp(x)
:e的x次方cmath.log10(x)
:以10为底x的对数cmath.sqrt(x)
:x的平方根
②decimal模块
Python里,所谓的小数其实是固定精度的浮点值。例如:0.1+0.1+0.1-0.3=5.551115123125783e-17
,利用decimal模块就能生成真正的小数。
③fractions模块
fractions模块可以生成分数,实现了一个有理数对象。还可以将浮点数转换为分数,要注意的是:尽管可以把浮点数转换为分数,在某些情况下,这么做会有不可避免的精度损失,因为这个数字在其最初的浮点形式上是不精确的。
④random模块
random模块虽然是产生随机数,但实际上它生成的随机数是“伪随机数”:计算机中的随机函数是按照一定算法模拟产生的,其结果是确定的,是可预见的。随机数种子相同,随机数的序列也是相同的:random.seed(a=None)
。
random()
:生成范围在[0,1)之间的随机实数uniform()
:生成指定范围的内的随机浮点数randint(m,n)
:生成指定范围[m,n]内的整数randrange(a,b,n)
:可以在 [a,b)范围内,按n递增的集合中随机选择一个数getrandbits(k)
:生成k位二进制的随机整数choice()
:从指定序列中随机选择一个元素sample()
:能指定每次随机元素的个数shuffle()
:可以将可变序列中所有元素随机排序
4.简单的图形界面模块
①图形用户界面(GUI)
GUI是人机交互的图形化界面设计,包括展示数据用的小控件、输入的方法、菜单、按钮以及窗口等。用户通过鼠标、键盘等输入设备操纵屏幕上的图标或菜单选项,来执行选择命令、调用文件、启动程序等日常任务。easygui
模块可以显示各种对话框、文本框、选择框与用户交互。
easygui.egdemo()可以进行功能演示
②easygui常用函数
- 消息窗口
easygui.msgbox()
:显示一条消息和提供一个"OK"按钮,用户可以指定任意的消息和标题,甚至重写"OK"按钮的内容 - 按钮选项
easygui.choicebox()
:为用户提供了一个可选择的列表,使用序列(元祖或列表)作为选项 - 显示文本
easygui.textbox()
:用于显示文本内容text参数可以是字符串、列表或元组类型 - 输入密码
easygui.passwordbox()
:类似于enterbox(),但是用户输入的内容是用"*"显示出来 - 打开文件
easygui.fileopenbox()
:返回用户选择的文件名(带完整路径),Default参数指定了一个默认路径
③实现简单的图形界面程序
5.海龟作图
①海龟作图的基本方法
- 其意象为模拟海龟在沙滩上爬行而留下的足迹
- 运用
turtle
模块,包括位置、方向、画笔(颜色、线条宽度等)。指令包括画笔运动命令:前/后移动、左/右转动、作画速度等;画笔控制命令:抬起/放下、画笔宽度、画笔颜色、填充颜色等
②绘制简单的图形
- 画一个粗细为5颜色为蓝色的正三角形
- 画直线
- 画正方形
- 画五角星
③绘制树
6.其他扩展模块
数字和数学模块
- numbers:数字抽象基类
- math:数学函数
- cmath:复数的数学函数
- decimal:十进制定点和浮点算术
- fractions:有理数
- random:生成伪随机数
- statistics:数学统计功能
并发执行
- threading:基于线程的并行性
- multiprocessing:基于进程的并行性
- concurrent.futures:启动并行任务
- subprocess:子流程管理
- sched:事件调度程序
- queue:同步的队列类
- _thread:低级线程API
数据持久化
- pickle:Python对象序列化
- copyreg:注册pickle支持功能
- shelve:Python对象持久化
- marshal:内部Python对象序列化
- dbm:与Unix“数据库”的接口
- sqlite3:SQLite数据库的DB-API 2.0接口
数据类型
- datetime:基本日期和时间类型
- calendar:与日历相关的一般功能
- collections:容器数据类型
- heapq:堆队列算法
- bisect:数组二分算法
- array:高效的数值数组
- weakref:弱引用
- types:动态类型创建和内置类型的名称
- copy:浅层和深层复制操作
- pprint:格式化输出
- reprlib:备用repr()实现
- enum :支持枚举
文件和目录访问
- pathlib:面向对象的文件系统路径
- os.path:常见的路径名操作
- fileinput:迭代多个输入流中的行
- stat:解释stat()结果
- filecmp:文件和目录比较
- tempfile:生成临时文件和目录
- glob:Unix样式路径名模式扩展
- fnmatch:Unix文件名模式匹配
- linecache:随机访问文本行
- shutil:高级文件操作
- macpath:MacOS9路径操作函数
通用操作系统服务
- os:其他操作系统接口
- io:用于处理流的核心工具
- time:时间访问和转换
- argparse:用于命令行选项,参数和子命令的解析器
- getopt:用于命令行选项的C风格解析器
- logging:Python的日志记录工具
- getpass:便携式密码输入
- curses:字符单元格显示的终端处理
- platform:访问底层平台的标识数据
- errno:标准errno系统符号
- ctypes:Python的外部函数库
网络和进程间通信
- asyncio:异步I/O
- socket:低级网络接口
- ssl:套接字对象的TLS/SSL包装器
- select:等待I/O完成
- selectors:高级I/O复用
- asyncore:异步套接字处理程序
- asynchat:异步套接字命令/响应处理程序
- signal:设置异步事件的处理程序
- mmap:内存映射文件支持
互联网数据处理
- email:电子邮件和MIME处理包
- json:JSON编码器和解码器
- mailcap:Mailcap文件处理
- mailbox:以各种格式处理邮箱
- mimetypes:将文件名映射到MIME类型
- base64:Base16/Base32/Base64/Base85数据编码
- binhex:对binhex4文件进行编码和解码
- binascii:在二进制和ASCII之间转换
- quopri:对MIME引用的可打印数据进行编码和解码uu:对uuencode文件进行编码和解码
多媒体服务
- audioop:处理原始音频数据
- aifc:读写AIFF和AIFC文件
- sunau:读取和写入Sun AU文件
- wave:读写WAV文件
- chunk:读取IFF分块数据
- colorsys:颜色系统之间的转换
- imghdr:确定图像的类型
- sndhdr:确定声音文件的类型
- ossaudiodev:访问兼容OSS的音频设备
文件格式
- csv:CSV文件读写
- configparser:配置文件解析器
- netrc:netrc文件处理
- xdrlib:对XDR数据进行编码和解码
- plistlib:生成并解析MacOSX.plist文件
数据压缩和存档
- zlib:与gzip兼容的压缩
- gzip/bz2:支持gzip/bzip2文件
- lzma:使用LZMA算法进行压缩
- zipfile:使用ZIP存档
- tarfile:读取和写入tar归档文件
功能编程模块、加密服务
- itertools:为高效循环创建迭代器的函数
- functools:可调用对象的高阶函数和操作
- operator:标准运算符作为函数
- hashlib:安全哈希和消息摘要算法接口
- hmac:用于消息身份验证的密钥哈希算法
- secrets:生成用于管理机密的安全随机数
互联网协议和支持
- webbrowser:Web浏览器控制器
- cgi:通用网关接口支持
- cgitb:CGI脚本的回溯管理器
- wsgiref:WSGI实用程序和参考实现
- urllib:URL处理模块
- http:HTTP模块
- ftplib/poplib/imaplib/nntplib/smtplib:FTP/POP3/IMAP4/NNTP/SMTP协议客户端
- smtpd:SMTP服务器
- telnetlib:Telnet客户端
- socketserver:网络服务器的框架
- xmlrpc:XMLRPC服务器和客户端模块
- ipaddress:IPv4/IPv6操作库