目录
python第三方库
一、数据分析和可视化
二、网络爬虫
三、自动化
四、Web开发
五、机器学习
python装饰器
一、Python 中的装饰器是什么
二、使用 Python 装饰器修改函数行为
三、使用多个 Python 装饰器
四、总结
Python语言提供超过15万个第三方库,Python库之间广泛联系、逐层封装。几乎覆盖信息技术所有领域,下面简单介绍下数据分析与可视化、网络爬虫、自动化、WEB开发、机器学习常用的一些第三方库。
1.matplotlib Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。Matplotlib 可用于 Python 脚本,Python 和 IPython shell(例如 MATLAB 或 Mathematica)。
2.numpy NumPy是Python科学计算的基础工具包,包括统计学、线性代数、矩阵数学、金融操作等等很多Python数据计算工作库都依赖它。支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
3.pyecharts Pyecharts是一个用于生成 Echarts 图表的类库。
4.pandas Pandas是一个用于Python数据分析的库,它的主要作用是进行数据分析。Pandas提供用于进行结构化数据分析的二维的表格型数据结构DataFrame,类似于R中的数据框,能提供类似于数据库中的切片、切块、聚合、选择子集等精细化操作,为数据分析提供了便捷。
5.scipy Scipy是一组专门解决科学和工程计算不同场景的主题工具包,它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解决问题。
6.plotly Plotly一个开源的、交互式的、基于浏览器的 Python 图形库,支持散点图、3D图等众多图形。
7.statsmodels Statsmodels是Python的统计建模和计量经济学工具包,包括一些描述性统计、统计模型估计和统计测试,集成了多种线性回归模型、广义线性回归模型、离散数据分布模型、时间序列分析模型、非参数估计、生存分析、主成分分析、核密度估计以及广泛的统计测试和绘图等功能。
1.requests 网络请求库,提供多种网络请求方法并可定义复杂的发送信息,对HTTP协议进行高度封装,支持非常丰富的链接访问功能。
2.bs4 BS4全称是Beatiful Soup,它提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。
3.scrapy 分布式爬虫框架,可用于模拟用户发送、侦听和解析并伪装网络报文,常用于大型网络数据爬取。
4.portia Portia是scrapyhub开源的一款可视化的爬虫规则编写工具。它提供可视化的Web页面,你只需要通过点击标注页面上你需要抽取的数据,不需要任何编程知识即可完成规则的开发。
5.cola Cola是一个分布式的爬虫框架,用户只需编写几个特定的函数,而无需关注分布式运行的细节。任务会自动分配到多台机器上,整个过程对用户是透明的。
1.selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE,Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。
2.pymysql 是Python操作MySQL数据库 。
3. pymongo 是Python中用来操作MongoDB的一个库。而MongoDB是一个基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案。
4.splinter Splinter 是一个用 Python 编写的 Web 应用程序进行验收测试的工具。
5.openpyxl 一个处理Microsoft Excel文档的Python第三方库,它支持读写Excel的xls、xlsx、xlsm、xltx、xltm。
6. python-docx 一个处理Microsoft Word文档的Python第三方库,它支持读取、查询以及修改doc、docx等格式文件,并能够对Word常见样式进行编程设置。
1.Django Django是一个开放源代码的Web应用框架,由Python开发。采用了MTV的框架模式,即模型M,视图V和模版T。
2.Pyramid 是一个通用、开源的Python Web应用程序开发框架。它主要的目的是让Python开发者更简单的创建Web应用,相比Django,Pyramid是一个 相对小巧、快速、灵活 的开源Python Web框架。
3.Tornado 一种 Web 服务器软件的开源版本。Tornado和现在的主流Web服务器框架(包括大多数Python的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快
4.Flask 是轻量级Web应用框架,相比Django和Pyramid,它也被称为微框架 。使用Flask开发Web应用十分方便,甚至几行代码即可建立一个小型网站。Flask核心十分简单,并不直接包含诸如数据库访问等的抽象访问层,而是通过扩展模块形式来支持。
1.Scikit-learn Scikit-learn是机器学习的核心程序库,依托于上面的几种工具包,封装了大量经典以及最新的机器学习模型。
2. NLTK NLTK,全称Natural Language Toolkit,自然语言处理工具包,这是一个开源项目,包含数据集、Python模块、教程等。
3.Keras 是一个由Python编写的开源人工神经网络库,可以作为Tensorflow、Microsoft-CNTK和Theano的高阶应用程序接口,进行深度学习模型的设计、调试、评估、应用和可视化。
4.Caffe 是一个兼具表达性、速度和思维模块化的深度学习框架。主要用于计算机视觉,它对图像识别的分类具有很好的应用效果。
5.theano 是一个 Python 库,用来定义、优化和模拟数学表达式计算,用于高效的解决多维数组的计算问题。
下面将带你学习装饰器在 Python 中的工作原理,如果在函数和类中使用装饰器,如何利用装饰器避免代码重复(DRY 原则,Don’t Repeat Yourself )。
装饰器在 Python中是一个非常强大和有用的工具,因为它允许程序员修改函数或类的行为。装饰器允许我们包装另一个函数,以扩展包装函数的行为,而无需修改基础函数定义。这也被称为元编程,因为程序本身在程序运行时会尝试修改自身的另一部分。
装饰器是语法糖: 在代码中利用更简洁流畅的语法实现更为复杂的功能。
我们知道,Python 一切皆对象。这意味着 Python 中的函数可以用作参数或作为参数传递。一等函数的属性:
函数是 Object 类型的实例。
可以将函数存储在变量中。
可以将该函数作为参数传递给另一个函数。
可以从函数中返回函数。
可以将它们存储在数据结构中,例如哈希表,列表等。
让我们看一个这样的例子。
def hello():
print('Welcome to Python Decorator!')
another_hello = hello()
another_hello
# Welcome to Python Decorator!
定义了一个 hello()
函数,然后将 hello 函数分配给 another_hello 变量,然后调用这个变量,得到的结果是 hello 函数被执行。
既然 Python 中的函数是对象,那么除了可以简单的调用之外,就可以把函数作为对象传递给另一个函数。
def print_welcome():
print('Welcome to Python Decorator!')
def print_hello(func):
def inner():
print('Hello!')
func()
return inner
decorated = print_hello(print_welcome)
decorated()
# Hello!
# Welcome to Python Decorator!
但是,上面的代码使用了内部函数我们可以通过简单地用装饰器函数 print_hello()
来装饰 print_welcome()
函数。
装饰器可以简化我们的操作。功能完全一样,但它的代码更简洁。即通过 @
符号简化装饰器的使用,如下所示:
def print_hello(func):
def inner():
print('Hello!')
func()
return inner
@print_hello
def print_welcome():
print('Welcome to Python Decorator!')
print_welcome()
# Hello!
# Welcome to Python Decorator!
通过这样做,我们能够消除将一个函数显式传递到另一个函数中的使用。Python 装饰器隐式处理这一点。
为了演示它们的实用性,让我们构建一个函数,该函数采用另一个函数并对其执行进行计时。在这里,使用装饰器的好处是它允许我们遵循 DRY 编程原则。
装饰器可用于测量函数执行所需的时间。 如果你定义一个简单的睡眠函数,以计算该函数的运行时。
import time
def timeit(func):
def timed():
start = time.time()
result = func()
end = time.time()
print(f'Program took {(end - start) * 1000}s to run')
return result
return timed
@timeit
def print_welcome():
print('Welcome to Python Decorator!')
print_welcome()
# Welcome to Python Decorator!
# Program took 0.0s to run
分析一下上面的代码:
定义了一个函数 timeit()
接受另一个函数
该函数还有另一个内部函数 timed()
函数跟踪开始时间,执行修饰函数,跟踪结束时间,计算差值并返回结果
最后,外层函数返回内层函数
当我们将此装饰器函数应用于我们的函数 print_welcome()
时,首先会返回欢迎问候语,然后显示执行时间。
与上面的例子类似,我们可以在程序运行时使用装饰器将有用的信息打印到终端。例如,我们可能想知道正在运行哪个函数以及当前时间。也可以使用装饰器传递到日志文件:
from datetime import datetime
def log_info(func):
def inner():
print(f'Starting run at {datetime.now()}')
print(f'Running {func.__name__}')
func()
return inner
@log_info
def print_welcome():
print('Welcome to Python Decorator!')
print_welcome()
# Starting run at 2022-03-27 23:26:38.473310
# Running print_welcome
# Welcome to Python Decorator!
在上面的示例中,在运行函数之前,我们的装饰器打印当前日期和时间以及将要运行的函数的名称。如果您正在运行较长的脚本,并且只是想知道程序的位置,这可能很有用。
让我们以 Web 应用程序的用例为例。当您在 Flask 中构建 Web 应用程序时,您总是会编写 url 路由。 每条路线都是 Web 应用程序中的特定页面。 打开页面 /about
可能会调用 about_page()
方法。
@app.route("/about")
def about_page():
return "Website about nachos"
到目前为止,您已经学习了如何创建一些有用的 Python 装饰器。然而,这些装饰器都没有传入参数。在本节中,您将学习如何创建接受参数的 Python 装饰器。
为此,我们将允许在 Python 语法魔术解压缩。使用 func_name(*args,**kwargs)
,它将解压缩所有参数和所有关键字参数。通过在装饰器中使用它,可以确保装饰器将接受任意数量的参数或关键字参数。这使得它们在重复使用时更加实用。
def print_function_name(func):
def inner(*args, **kwargs):
print(f'Running {func.__name__}...')
return func(*args, **kwargs)
return inner
@print_function_name
def add_nums(a, b):
print(a + b)
add_nums(1, 2)
# Running add_nums...
# 3
上述方法的美妙之处在于它同时接受位置和关键字参数。因此,即使我们以以下任何格式执行该函数,该函数也将运行:
add_nums(1024, 2020)
add_nums(1024, b = 2021)
add_nums(a = 1024, b = 2222)
关于 Python 装饰器的一个有趣的方式是:可以同时使用多个装饰器。这意味着您可以将多个装饰器应用于单个函数。为了理解这一点,来看一个例子:
def one(func):
def inner(*args, **kwargs):
print('1')
return func(*args, **kwargs)
return inner
def two(func):
def inner(*args, **kwargs):
print('2')
return func(*args, **kwargs)
return inner
@one
@two
def speak(text):
print(text)
speak('Hello')
# 1
# 2
# Hello
我们的装饰器函数所做的唯一事情就是打印出数字 1 和数字 2。通过将装饰器 @one
放在 @two
之前,您可以将 two()
包装的函数包装为 one()
。为了说明这一点,您可以切换顺序以查看如何修改行为:
# Changing decorator order
@two
@one
def speak(text):
print(text)
speak('Hello')
# 2
# 1
# Hello
通过首先放置 @two
装饰器,该函数成为最外层的函数。
在本文中,我们先了解了什么是 Python 装饰器,它代表元编程的语法糖。 Python 装饰器允许我们修改函数行为并允许我们以不同的方式扩展函数。
接着了解装饰器是什么以及如何使用它们。学习了如何允许将参数传递给 Python 装饰器,学习了几个常见的装饰器有用的工具。最后,如何使用多个装饰器以及装饰器的先后顺序。
Python第三方库和 Python 装饰器就简单介绍到这里,如果有你感兴趣,不妨去试试它的功能。学习python是一个长久的事情,但是对于初学者来说上手还是比较简单的
B站最牛的Python自动化测试框架全栈测试开发实战项目入门到精通,涨薪必备教程!!!