Python中的库
Python的标准库有:
名称 作用
builtins 内建函数默认加载
time 时间
calendar 日历
hashlib 加密算法
copy 拷贝
functools 常用的工具
re 字符串正则匹配
datetime 为日期和时间处理同时提供了简单和复杂的方法。
zlib 直接支持通用的数据打包和压缩格式:zlib,gzip,bz2,zipfile,以及 tarfile。
random 提供了生成随机数的工具。
math 为浮点运算提供了对底层C函数库的访问。
sys 工具脚本经常调用命令行参数。这些命令行参数以链表形式存储于 sys 模块的 argv 变量。
glob 提供了一个函数用于从目录通配符搜索中生成文件列表。
os 提供了不少与操作系统相关联的函数。
multiprocessing 多进程(windows系统)
fork 处理进程的模块(linux系统)
threading 多线程
json 编码和解码json对象
logging 记录日志和调试
Python常用的第三方库有:
名称 作用 使用参考
Scrapy 专业爬虫工具常用的库。
requests-html 专门爬取网站的库。
Requests http库。
Pillow 是PIL(Python图形库)的一个分支。适用于在图形领域工作的人。
matplotlib 绘制数据图的库。对于数据科学家或分析师非常有用。
OpenCV 图片识别常用的库,通常在练习人脸识别时会用到
pytesseract 图片文字识别,即OCR识别
wxPython Python的一个GUI(图形用户界面)工具。
Twisted 对于网络应用开发者最重要的工具。
SymPy SymPy可以做代数评测、差异化、扩展、复数等等。
SQLAlchemy 数据库的库。
SciPy Python的算法和数学工具库。
Scapy 数据包探测和分析库。
pywin32 提供和windows交互的方法和类的Python库。
pyQT Python的GUI工具。给Python脚本开发用户界面时次于wxPython的选择。
pyGtk 也是Python GUI库。
Pyglet 3D动画和游戏开发引擎。
Pygame 开发2D游戏的时候使用会有很好的效果。
NumPy 为Python提供了很多高级的数学方法。
nose Python的测试框架。
nltk 自然语言工具包。
IPython Python的提示信息。包括完成信息、历史信息、shell功能,以及其他很多很多方面。
BeautifulSoup xml和html的解析库,对于新手非常有用。
greenlet 协程处理
gevent 协程处理(最好用)
如何自定义模块
在Python中,模块是代码组织的一种方式,把功能相近的函数或者类放到一个文件中,一个文件(.py)就是一个模块(module),模块名就是文件名去掉后缀py。
模块
__all__ = ['number', 'add', 'minus', 'Person'] # 在来这里配置 from 模块名 import * 的时候导入时可以访问到的内容
# 定义变量
number = 100
# 定义函数
def add():
print('使用加法')
def minus(n):
print('使用减法')
# 定义类
class Person:
role = '人类'
def __init__(self, name, age):
self.name = name
self.age = age
def eat(self, food):
print('{}正在吃{}'.format(self.name, food))
@classmethod
def run(cls):
print('{}可以跑步'.format(cls.role))
def test():
print('我是测试.....')
# 如果不希望在其他模块中导入的时候进行调用.就会用到__name__
if __name__ == '__main__':
test()
使用模块
- 引入模块方式1
import 模块名
模块名.变量 模块名.函数 模块名.类
- 引入模块方式2
from 模块名 import 变量|函数|类
在代码中直接使用变量,函数, 类
- 引入模块方式2
from 模块名 import *
导入该模块中所有的内容
- 无论是用import还是from导入,模块里面所有的内容都会被加载
如果不希望进行调用.就会用到__name__
在自己的模块里面__name__==main
在其他模块中通过导入的方式调用的话,name:模块名
# 方式1
import A
# 使用模块中的变量
print(A.number)
# 使用模块中的函数
A.add()
p = A.Person('lucy', 20)
p.eat('面条')
A.Person.run()
# 方式1
from A import number, add, Person
# 使用模块中的变量
print(number)
# 使用模块中的函数
add()
p = Person('lucy', 20)
p.eat('面条')
Person.run()
注意:
1. from 模块 import * 表示可以使用模块里面的所有内容,如果没有定义__all__所有的都可以访问,但是如果添加上了__all__,只有__all__=[' ',' ']列表中可以访问的
2. from 包 import * 表示该包中内容(模块)是不能访问的,就需要在__init__.py文件中定义__all__=[可以通过*访问的模块]