Python自学之路七:几个常用模块和其他模块

模块就是程序。每个扩展名为.py的Python程序都是一个独立的模块(Module),模块能定义函数、类和变量,让你能够有逻辑地组织你的Python代码段。

1.调用模块

  • import <模块> [as <别名>]:将模块中的函数等名称导入当前程序,在调用模块中的函数的时候,需要加上模块的命名空间,可以给导入的命名空间替换一个新的名字,引用方法:<模块>.<名称>
  • from <模块> import <函数>:引入模块中的某个函数,调用时不需要再加上命名空间

2.几个时间模块

①datetime模块

  1. 可对date、time、datetime三种时间模式进行单独管理
    • datetime.date():处理日期(年月日)
    • datetime.time():处理时间(时分秒、毫秒)
    • datetime.datetime():处理日期+时间
    • datetime.timedelta():处理时段(时间间隔)
  2. 获取当前日期和时间,可以使用strftime或datetime.datetime.isoformat()格式化
    • datetime.date.today():只获取日期
    • datetime.datetime.now():获取日期+具体到微秒的时间
  3. 时间戳:是指格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。
    • timetuple函数:将时间转换成struct_time格式
    • time.mktime函数:把timetuple得出来的结果用秒数来表示时间戳的浮点数
    • datetime.date.fromtimestamp():将时间戳转换成日期
  4. timedelta()方法来实现时间的加减法
  5. 注:print会自动输出固定格式

②calendar模块

  1. 制作电子日历
    • calendar.calendar(<年>)calendar.month(<年>,<月>):都是返回多行字符串
    • calendar.prmonth(<年>,<月>)calendar.prcal(<年>):相当于print (calendar.month (<年>,<月>)),正常的日历
  2. 使用calendar.monthcalendar()将日历列表化
    • 返回某一年的某一个月份日历,是一个嵌套列表
    • 最里层的列表含有七个元素,代表一周(从周一到周日)
    • 如果没有本月的日期,则为0
  3. 判别闰年。普通闰年:能被4整除但不能被100整除的年份;世纪闰年:能被400整除的年份
  4. 计算某月共有多少天,从周几开始:从0开始,依次为周一、周二…;计算某天是周几:返回值为0~6,依次对应的是周一到周日

③time模块

  1. time.time()方法获取时间戳
  2. 时间戳的用处:计算程序花了多长时间

  3. time.asctime()time.ctime():获取当前时间分别对应:周几、月、日、时分秒、年
  4. time.asctime()还可以将元组数据转化为日期,元组分别对应年、月、日、时、分、秒、周几、一年中的第几天、是否为夏令时间。
  5. 利用索引获取时间信息:localtime()
  6. 让程序运行到某处便暂停几秒:time.sleep()
  7. 运行时可以很明显的感觉到停顿

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常用函数

  1. 消息窗口easygui.msgbox():显示一条消息和提供一个"OK"按钮,用户可以指定任意的消息和标题,甚至重写"OK"按钮的内容
  2. 按钮选项easygui.choicebox():为用户提供了一个可选择的列表,使用序列(元祖或列表)作为选项
  3. 显示文本easygui.textbox():用于显示文本内容text参数可以是字符串、列表或元组类型
  4. 输入密码easygui.passwordbox():类似于enterbox(),但是用户输入的内容是用"*"显示出来
  5. 打开文件easygui.fileopenbox():返回用户选择的文件名(带完整路径),Default参数指定了一个默认路径

③实现简单的图形界面程序

5.海龟作图

①海龟作图的基本方法

  1. 其意象为模拟海龟在沙滩上爬行而留下的足迹
  2. 运用turtle模块,包括位置、方向、画笔(颜色、线条宽度等)。指令包括画笔运动命令:前/后移动、左/右转动、作画速度等;画笔控制命令:抬起/放下、画笔宽度、画笔颜色、填充颜色等

②绘制简单的图形

  1. 画一个粗细为5颜色为蓝色的正三角形
  2. 画直线
  3. 画正方形
  4. 画五角星

③绘制树

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操作库
点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注