python自学篇十一[ 模块简介+模块制作+dir()函数+标准模块+包]

python基础系列:
python自学篇一[ Anaconda3安装 ]
python自学篇二[ pycharm安装及使用 ]
python自学篇三[ 判断语句if的使用 ]
python自学篇四[ 基本数据类型和字符串常用处理 ]
python自学篇五[ 列表 ]
python自学篇六[ 元组 ]
python自学篇七[ 字典+深拷贝与浅拷贝 ]描述
python自学篇八[ 循环:while+for+pass+range()+推导式 ]
python自学篇九[ 函数(一):参数+对象 ]
python自学篇九[ 函数(二):返回值return+yield+迭代器+生成器 ]
python自学篇九[ 函数(三):变量作用域+ATM+5个小练习 ]
python自学篇九[ 函数(四):递归函数+匿名函数+内置函数+高阶函数 ]
python自学篇十[ 面向对象 (一) :面向对象概念+定义类+练习一]
python自学篇十[ 面向对象 (二) :继承+多继承+类属性+实例属性]
python自学篇十[ 面向对象 (三) :访问限制+类方法+静态方法]
python自学篇十[ 面向对象 (四) :王者荣耀小游戏+模拟一个简单的银行进行业务办理的类]
python自学篇十一[ 模块简介+模块制作+dir()函数+标准模块+包]
python自学篇十二[ 文件:打开+读取+写入+3个习题]

python自学篇十一[ 模块简介+模块制作+dir()函数+标准模块+包]

一.模块简介

  • 在实际开发中我们不可能不用到系统的标准模块,或第三方模块。
  • 实现与时间有关的功能,就需要调用系统的time模块。
#导入整个模块
import time
  • 调用模块中的函数时,必须加上模块名调用,因为可能存在多个模块中含有相同名称的函数,此时,如果只是通过函数名来调用,解释器无法知道到底要调用哪个函数。为了避免这样的情况,调用函数时,必须加上模块名
#导入整个模块
import time
time.sleep(5)#睡眠5
  • 指定的模块中导入指定的部分
#from 模块名 import 函数名
from time import sleep
  • 导入模块中的所有内容
 from math import *
 print(ceil(1.1))  #向上取整
 print(floor(1.1)) #向下取整
  • 给导入的模块取别名
import math as m
from math import ceil as c  #不建议使用
  • 实现与文件和文件夹有关的操作,就需要要用到os模块。

  • 通过Selenium实现的Web自动化测试,那么Selenium对于Python来说就是一个第三方扩展模块。

    • 每一个 Python 脚本文件都可以被当成是一个模块。
    • 模块以磁盘文件的形式存在。
    • 当一个模块变得过大,并且驱动了太多功能的话,就应该考虑拆一些代码出来另外建一个模块。
    • 模块里的代码可以是一段直接执行的脚本,也可以是一堆类似库函数的代码,从而可以被别的模块导 入(import)调用。
    • 模块可以包含直接运行的代码块、类定义、 函数定义或这几者的组合。
  • 推荐所有的模块在Python模块的开头部分导入。而且最好按照这样的顺序:

  • Python标准库模块

  • Python第三方模块

  • 应用程序自定义模块

二.模块制作

既然可调用系统模块,那么也可以自己创建一个模块,然后通过另一个程序调用

当你导入一个模块,Python解析器对模块位置的搜索顺序是:
  • 当前目录
  • 如果不在当前目录,Python则搜索在环境变量PYTHONPATH下的每个目录
  • 如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/
  • 模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
1.同级目录下模块引入:
import test   #引入同级目录中的test.py这个文件模块
print(test.add(2,3))#调用同级目录中的test.py模块中的add()方法
2.跨模块引入(不在同级目录下):
import study.test2  #模块名.函数名【引入study目录下的test.py这个文件模块】
print(study.test2.test2_add(2,3))#调用study目录下的test.py模块中的add()方法
3.回到上一级目录下,再导入模块
import sys   #查看路径变量
print(sys.path)# 添加目标路径导当前环境中

sys.path.append('..\\') #返回上一级目录

import msg.send #引入msg目录下的send.py这个文件模块
msg.send.sendMsg()#调用msg目录下的send.py模块中的sendMsg()方法
4.覆盖标准模块

调用自己的模块,覆盖标准模块(系统的)

from msg import math   #自定义的模块
print(math.ceil(1.1))  #向上取整
print(math.floor(1.1))

三.dir()函数

用于按模块名搜索模块定义,它返回一个字符串类型的存储列表该列表列出了所有类型的名称:变量,模块,函数,等等

print(dir())
print(dir(math))

四.标准模块

有些模块直接被构建在解析器里,这些虽然不是一些语言内置的功能,但是他却能很高效的使用,甚至是系统级调用也没问题。这些组件会根据不同的操作系统进行不同形式的配置,比如 winreg (Windows注册表访问)这个模块就只会提供给 Windows 系统。应该注意到这有一个特别的模块 sys ,它内置在每一个 Python 解析器中。

Python 3.x标准模块库目录
文本
  1. string:通用字符串操作

  2. re:正则表达式操作

  3. difflib:差异计算工具

  4. textwrap:文本填充

  5. unicodedata:Unicode字符数据库

  6. stringprep:互联网字符串准备工具

  7. readline:GNU按行读取接口

  8. rlcompleter:GNU按行读取的实现函数

二进制数据
  1. struct:将字节解析为打包的二进制数据

  2. codecs:注册表与基类的编解码器

数据类型
  1. datetime:基于日期与时间工具

  2. calendar:通用月份函数

  3. collections:容器数据类型

  4. collections.abc:容器虚基类

  5. heapq:堆队列算法

  6. bisect:数组二分算法

  7. array:高效数值数组

  8. weakref:弱引用

  9. types:内置类型的动态创建与命名

  10. copy:浅拷贝与深拷贝

  11. pprint:格式化输出

  12. reprlib:交替repr()的实现

数学
  1. numbers:数值的虚基类

  2. math:数学函数

  3. cmath:复数的数学函数

  4. decimal:定点数与浮点数计算

  5. fractions:有理数

  6. random:生成伪随机数

函数式编程
  1. itertools:为高效循环生成迭代器

  2. functools:可调用对象上的高阶函数与操作

  3. operator:针对函数的标准操作

文件与目录
  1. os.path:通用路径名控制

  2. fileinput:从多输入流中遍历行

  3. stat:解释stat()的结果

  4. filecmp:文件与目录的比较函数

  5. tempfile:生成临时文件与目录

  6. glob:Unix风格路径名格式的扩展

  7. fnmatch:Unix风格路径名格式的比对

  8. linecache:文本行的随机存储

  9. shutil:高级文件操作

  10. macpath:Mac OS 9路径控制函数

持久化
  1. pickle:Python对象序列化

  2. copyreg:注册机对pickle的支持函数

  3. shelve:Python对象持久化

  4. marshal:内部Python对象序列化

  5. dbm:Unix“数据库”接口

  6. sqlite3:针对SQLite数据库的API 2.0

压缩
  1. zlib:兼容gzip的压缩

  2. gzip:对gzip文件的支持

  3. bz2:对bzip2压缩的支持

  4. lzma:使用LZMA算法的压缩

  5. zipfile:操作ZIP存档

  6. tarfile:读写tar存档文件

文件格式化
  1. csv:读写CSV文件

  2. configparser:配置文件解析器

  3. netrc:netrc文件处理器

  4. xdrlib:XDR数据编码与解码

  5. plistlib:生成和解析Mac OS X .plist文件

加密
  1. hashlib:安全散列与消息摘要

  2. hmac:针对消息认证的键散列

操作系统工具
  1. os:多方面的操作系统接口

  2. io:流核心工具

  3. time:时间的查询与转化

  4. argparser:命令行选项、参数和子命令的解析器

  5. optparser:命令行选项解析器

  6. getopt:C风格的命令行选项解析器

  7. logging:Python日志工具

  8. logging.config:日志配置

  9. logging.handlers:日志处理器

  10. getpass:简易密码输入

  11. curses:字符显示的终端处理

  12. curses.textpad:curses程序的文本输入域

  13. curses.ascii:ASCII字符集工具

  14. curses.panel:curses的控件栈扩展

  15. platform:访问底层平台认证数据

  16. errno:标准错误记号

  17. ctypes:Python外部函数库

并发
  1. threading:基于线程的并行

  2. multiprocessing:基于进程的并行

  3. concurrent:并发包

  4. concurrent.futures:启动并行任务

  5. subprocess:子进程管理

  6. sched:事件调度

  7. queue:同步队列

  8. select:等待I/O完成

  9. dummy_threading:threading模块的替代(当_thread不可用时)

  10. _thread:底层的线程API(threading基于其上)

  11. _dummy_thread:_thread模块的替代(当_thread不可用时)

进程间通信
  1. socket:底层网络接口

  2. ssl:socket对象的TLS/SSL填充器

  3. asyncore:异步套接字处理器

  4. asynchat:异步套接字命令/响应处理器

  5. signal:异步事务信号处理器

  6. mmap:内存映射文件支持

互联网
  1. email:邮件与MIME处理包

  2. json:JSON编码与解码

  3. mailcap:mailcap文件处理

  4. mailbox:多种格式控制邮箱

  5. mimetypes:文件名与MIME类型映射

  6. base64:RFC 3548:Base16、Base32、Base64编码

  7. binhex:binhex4文件编码与解码

  8. binascii:二进制码与ASCII码间的转化

  9. quopri:MIME quoted-printable数据的编码与解码

  10. uu:uuencode文件的编码与解码

HTML与XML
  1. html:HTML支持

  2. html.parser:简单HTML与XHTML解析器

  3. html.entities:HTML通用实体的定义

  4. xml:XML处理模块

  5. xml.etree.ElementTree:树形XML元素API

  6. xml.dom:XML DOM API

  7. xml.dom.minidom:XML DOM最小生成树

  8. xml.dom.pulldom:构建部分DOM树的支持

  9. xml.sax:SAX2解析的支持

  10. xml.sax.handler:SAX处理器基类

  11. xml.sax.saxutils:SAX工具

  12. xml.sax.xmlreader:SAX解析器接口

  13. xml.parsers.expat:运用Expat快速解析XML

互联网协议与支持
  1. webbrowser:简易Web浏览器控制器

  2. cgi:CGI支持

  3. cgitb:CGI脚本反向追踪管理器

  4. wsgiref:WSGI工具与引用实现

  5. urllib:URL处理模块

  6. urllib.request:打开URL连接的扩展库

  7. urllib.response:urllib模块的响应类

  8. urllib.parse:将URL解析成组件

  9. urllib.error:urllib.request引发的异常类

  10. urllib.robotparser:robots.txt的解析器

  11. http:HTTP模块

  12. http.client:HTTP协议客户端

  13. ftplib:FTP协议客户端

  14. poplib:POP协议客户端

  15. imaplib:IMAP4协议客户端

  16. nntplib:NNTP协议客户端

  17. smtplib:SMTP协议客户端

  18. smtpd:SMTP服务器

  19. telnetlib:Telnet客户端

  20. uuid:RFC4122的UUID对象

  21. socketserver:网络服务器框架

  22. http.server:HTTP服务器

  23. http.cookies:HTTPCookie状态管理器

  24. http.cookiejar:HTTP客户端的Cookie处理

  25. xmlrpc:XML-RPC服务器和客户端模块

  26. xmlrpc.client:XML-RPC客户端访问

  27. xmlrpc.server:XML-RPC服务器基础

  28. ipaddress:IPv4/IPv6控制库

多媒体
  1. audioop:处理原始音频数据

  2. aifc:读写AIFF和AIFC文件

  3. sunau:读写Sun AU文件

  4. wave:读写WAV文件

  5. chunk:读取IFF大文件

  6. colorsys:颜色系统间转化

  7. imghdr:指定图像类型

  8. sndhdr:指定声音文件类型

  9. ossaudiodev:访问兼容OSS的音频设备

国际化
  1. gettext:多语言的国际化服务

  2. locale:国际化服务

编程框架
  1. turtle:Turtle图形库

  2. cmd:基于行的命令解释器支持

  3. shlex:简单词典分析

Tk图形用户接口
  1. tkinter:Tcl/Tk接口

  2. tkinter.ttk:Tk主题控件

  3. tkinter.tix:Tk扩展控件

  4. tkinter.scrolledtext:滚轴文本控件

开发工具
  1. pydoc:文档生成器和在线帮助系统

  2. doctest:交互式Python示例

  3. unittest:单元测试框架

  4. unittest.mock:模拟对象库

  5. test:Python回归测试包

  6. test.support:Python测试工具套件

  7. venv:虚拟环境搭建

调试
  1. bdb:调试框架

  2. faulthandler:Python反向追踪库

  3. pdb:Python调试器

  4. timeit:小段代码执行时间测算

  5. trace:Python执行状态追踪

运行时
  1. sys:系统相关的参数与函数

  2. sysconfig:访问Python配置信息

  3. builtins:内置对象

  4. main:顶层脚本环境

  5. warnings:警告控制

  6. contextlib:with状态的上下文工具

  7. abc:虚基类

  8. atexit:出口处理器

  9. traceback:打印或读取一条栈的反向追踪

  10. future:未来状态定义

  11. gc:垃圾回收接口

  12. inspect:检查存活的对象

  13. site:址相关的配置钩子(hook)

  14. fpectl:浮点数异常控制

  15. distutils:生成和安装Python模块

解释器
  1. code:基类解释器

  2. codeop:编译Python代码

导入模块
  1. imp:访问import模块的内部

  2. zipimport:从ZIP归档中导入模块

  3. pkgutil:包扩展工具

  4. modulefinder:通过脚本查找模块

  5. runpy:定位并执行Python模块

  6. importlib:import的一种实施

Python语言
  1. parser:访问Python解析树

  2. ast:抽象句法树

  3. symtable:访问编译器符号表

  4. symbol:Python解析树中的常量

  5. token:Python解析树中的常量

  6. keyword:Python关键字测试

  7. tokenize:Python源文件分词

  8. tabnany:模糊缩进检测

  9. pyclbr:Python类浏览支持

  10. py_compile:编译Python源文件

  11. compileall:按字节编译Python库

  12. dis:Python字节码的反汇编器

  13. pickletools:序列化开发工具

其它
  1. formatter:通用格式化输出
Windows相关
  1. msilib:读写Windows Installer文件

  2. msvcrt:MS VC++ Runtime的有用程序

  3. winreg:Windows注册表访问

  4. winsound:Windows声音播放接口

Unix相关
  1. posix:最常用的POSIX调用

  2. pwd:密码数据库

  3. spwd:影子密码数据库

  4. grp:组数据库

  5. crypt:Unix密码验证

  6. termios:POSIX风格的tty控制

  7. tty:终端控制函数

  8. pty:伪终端工具

  9. fcntl:系统调用fcntl()和ioctl()

  10. pipes:shell管道接口

  11. resource:资源可用信息

  12. nis:Sun的NIS的接口

  13. syslog:Unix syslog程序库

宁静的天空:http://www.cnblogs.com/ribavnu/p/4886472.html

五.包

什么是包
  • 包是一种管理 Python 模块命名空间的形式,采用"点模块名称"。比如一个模块的名称是 A.B, 那么他表示一个包 A中的子模块B
  • 目录中只有包含一个叫做__init__.py的文件才会被认作是一个包
  • 在导入包的时候,Python会从sys.path中的目录来寻找这个包中包含的子目录

在这里插入图片描述

导入包

现有两个模块功能有些联系,所以将其放到同一个文件夹下,一个文件中的类继承另一个问文件中的类。

  • 使用import文件.模块的方式导入
  • 使用from文件夹import模块的方式导入
创建__init__.py 

目录中只有包含了叫做__init__.py的文件,才能被程序认作是包,模块才能被导入成功。现在我们就在msg文件夹下创建一个__init__.py文件,并且一定要在文件中写入__all__

__init__.py 控制着包的导入行为。如果__init__.py文件为空的话,仅仅是把这个包导入,不会导入包中的模块。__init__.py中的__all__变量,是用来控制from包名import  * 时导入的模块。
可以在__init__.py中编写其他内容,在导入时,这些编写的内容就会被执行。
可以在__init__.py中向sys.path添加当前被调用模块路径。
__all__总结
1.编写Python代码(不建议在__init__中写python模块,可以在包中在创建另外的模块来写,尽量保证__init__.py简单)
2.模块中不使用__all__属性,则导入模块内的所有公有属性,方法和类 。 模块中使用__all__属性,则表示只导入__all__中指定的属性,因此,使用__all__可以隐藏不想被import的默认值。 __all__变量是一个由string元素组成的list变量。 它定义了当我们使用 from <module> import * 导入某个模块的时候能导出的符号(这里代表变量,函数,类等)。
3.from <module> import * 默认的行为是从给定的命名空间导出所有的符号(当然下划线开头的变量,方法和类除外)。 需要注意的是 __all__ 只影响到了 from <module> import * 这种导入方式, 对于 from <module> import <member> 导入方式并没有影响,仍然可以从外部导入。
  • 创建__init__.py总结

1.包将有联系的模块组织在一个,即放到同一个文件夹下,并且在这个文件夹创建一个名字为__init__.py文件,那么这个文件夹就称之为包
2.有效避免模块名称冲突问题,让应用组织结构更加清晰

imp.reload()简介

默认情况下,模块在第一次被导入之后,其他的导入都不再有效。如果此时在另一个窗口中改变并保存了模块的源代码文件,也无法更新该模块。这样设计原因在于,导入是一个开销很大的操作(导入必须找到文件,将其编译成字节码,并且运行代码),以至于每个文件、每个程序运行不能够重复多于一次。
当一个模块被导入到一个脚本,模块顶层部分的代码只会被执行一次。因此,如果你想重新执行模块里顶层部分的代码,可以用reload()函数。该函数会重新导入之前导入过的模块。
语法如下:
reload(module_name)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值