它可以帮助你从大量顶级国际出版物中检索到新闻文章和相关元数据。你可以检索图像、文本和作者名。
它还有一些内置的 NLP 功能。
地址:#performing-nlp-on-an-article
如果你想在下一个项目中使用 BeautifulSoup 或其它 DIY 网页抓取库,那么不如使用$ pip install newspaper3k,既省时又省事,何乐而不为呢?
运算符重载(Operator overloading)
Python 支持运算符重载。
它实际上是一个简单的概念。你有没有想过为什么 Python 允许用户使用 + 运算符来将数字相加,并级联字符串?这就是运算符重载在发挥作用。
你可以使用 Python 的标准运算符号来定义对象,这样你可以在与这些对象相关的语境中使用它们。
class Thing:
def __init__(self, value):
self.__value = value
def __gt__(self, other):
return self.__value > other.__value
def __lt__(self, other):
return self.__value < other.__value
something = Thing(100)
nothing = Thing(0)
# True
something > nothing
# False
something < nothing
# Error
something + nothing
pprint
Python 的默认 print 函数就可以实现打印功能。但如果尝试打印较大的嵌套对象,就会发现打印结果很丑。
这时 Python 标准库的 pretty printer 模块就可以发挥作用了。该模块可以将复杂的结构化对象以一种易读的格式打印出来。
pretty printer 模块:
Python 开发者的必备技能之一就是处理复杂的数据结构。
import requests
import pprint
url = 'https://randomuser.me/api/?results=1'
users = requests.get(url).json()
pprint.pprint(users)
Queue
Python 支持多线程,而这是由 Python 标准库的 Queue 模块支持的。
该模块允许用户实现队列(queue)数据结构。队列数据结构允许用户根据特定的规则添加和检索条目。
『First in, first out』 (FIFO) 队列允许用户按照对象被添加的顺序来检索对象。『Last in, first out』 (LIFO) 队列允许用户首先访问最新添加的对象。
最后,优先级队列(priority queue)允许用户根据对象对应的优先级类别来检索对象。
如何使用 queue 在 Python 中实现多线程编程,示例详见:。
__repr__
在 Python 中定义一个类别或对象时,以「官方」方式将对象表示为字符串很有用。例如:
>>> file = open('file.txt', 'r')
>>> print(file)
<open file 'file.txt', mode 'r' at 0x10d30aaf0>
这使代码 debug 变得简单很多。将字符串添加到类别定义重载运算符,如下所示:
class someClass:
def __repr__(self):
return "<some description here>"
someInstance = someClass()
# prints
print(someInstance)
sh
Python 是一种伟大的脚本语言,不过有时使用标准 os 和 subprocess 库会有点棘手。
sh 库提供了一种不错的替代方案。
sh 库:
该库允许用户像使用普通函数一样调用任意程序,这对自动化工作流和任务非常有用。
from sh import *
sh.pwd()
sh.mkdir('new_folder')
sh.touch('new_file.txt')
sh.whoami()
sh.echo('This is great!')
类型提示(Type hints)
Python 是动态语言。在定义变量、函数、类别等时无需指定数据类型。
这有利于缩短开发周期。但是,简单的类型错误(typing issue)导致的运行时错误真的太烦了。
从 Python 3.5 版本开始,用户可以选择在定义函数时开启类型提示。
def addTwo(x : Int) -> Int:
return x + 2
你还可以定义类型别名:
from typing import List
Vector = List[float]
Matrix = List[Vector]
def addMatrix(a : Matrix, b : Matrix) -> Matrix:
result = []
for i,row in enumerate(a):
result_row =[]
for j, col in enumerate(row):
result_row += [a[i][j] + b[i][j]]
result += [result_row]
return result
x = [[1.0, 0.0], [0.0, 1.0]]
y = [[2.0, 1.0], [0.0, -2.0]]
z = addMatrix(x, y)
尽管非强制,但类型注释可以使代码更易理解。
它们还允许你在运行之前使用类型检查工具捕捉 TypeError。在进行大型复杂项目时执行此类操作是值得的。
uuid
生成通用唯一标识符(Universally Unique ID,UUID)的一种快速简单方法就是使用 Python 标准库的 uuid 模块。
uuid 模块:
import uuid
user_id = uuid.uuid4()
print(user_id)
这创建了一个随机化后的 128 比特数字,该数字几乎必然是唯一的。
事实上,可以生成 2¹²²可能的 UUID。这个数字超过了 5,000,000,000,000,000,000,000,000,000,000,000,000。
在给定集合中找出重复数字的可能性极低。即使有一万亿 UUID,重复数字存在的概率也远远低于十亿分之一。
虚拟环境(Virtual environment)
这可能是 Python 中我最喜欢的事物了。
你可能同时处理多个 Python 项目。不幸的是,有时候两个项目依赖于相同依赖项的不同版本。那你要安装哪个版本呢?
幸运的是,Python 支持虚拟环境,这使得用户能够充分利用两种环境。见下列行:
python -m venv my-project
source my-project/bin/activate
pip install all-the-modules
现在你在一台机器上具备独立的多个 Python 版本了。问题解决!
wikipedia
Wikipedia 拥有一个很棒的 API,允许用户以编程方式访问巨大体量的免费知识和信息。
wikipedia 模块使得访问该 API 非常便捷。
Wikipedia 模块:
import wikipedia
result = wikipedia.page('freeCodeCamp')
print(result.summary)
for link in result.links:
print(link)
和真实的维基百科网站类似,该模块支持多种语言、页面消歧、随机页面检索重载运算符,甚至还具备 donate() 方法。
xkcd
humour 是 Python 语言的一个关键特征,其名称来自英国喜剧片《蒙提·派森的飞行马戏团》(Monty Python and the Flying Circus)。Python 的很多官方文档引用了该喜剧片最著名的剧情。
幽默感并不限于文档。试着运行下列行:
import antigravity
将打开 xkcd 画的 Python 漫画。不要改变这一点,Python。不要改变。
YAML
YAML 代表 『YAML Ain』t Markup Language』。它是一种数据格式语言,是 JSON 的超集。
与 JSON 不同,它可以存储更复杂的对象并引用自己的元素。你还可以编写注释,使其尤其适用于编写配置文件。
PyYAML 模块()可以让你在 Python 中使用 YAML。安装:
$ pip install pyyaml
然后导入到项目中:
import yaml
PyYAML 使你能够存储任何数据类型的 Python 对象,以及任何用户定义类别的实例。
zip
给你支最后一招,非常酷。还在用两个列表来组成一部词典吗?
keys = ['a', 'b', 'c']
vals = [1, 2, 3]
zipped = dict(zip(keys, vals))
zip() 内置函数使用多个可迭代对象作为输入并返回元组列表。每个元组按位置索引对输入对象的元素进行分组。
你也可以通过调用*zip() 来「解压」对象。
原文链接:
限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688