共计 4147 个字符,预计需要花费 11 分钟才能阅读完成。
Python 规范库有超过 200 个模块,程序员能够在他们的程序中导入和应用。尽管一般程序员对其中许多模块都有一些教训,但很可能有一些好用的模块他们依然没有留神到。
我发现其中许多模块都蕴含了在各个领域都十分有用的函数。比拟数据集、合作其余函数以及音频解决等都能够仅应用 Python 就能够主动实现。
因而,我编制了一份您可能不晓得的 Python 模块的候选清单,并对这几个模块进行了适当的解释,以便您在未来了解和应用它们。
所有这些模块都有不同的函数和类。本文蕴含了几个鲜为人知的函数和类,因而即便您据说过这些模块,也可能不晓得它们的某些方面和用处。
1、difflib
difflib 是一个专一于比拟数据集(尤其是字符串)的 Python 模块。为了具体理解您能够应用此模块实现的几件事,让咱们检查一下它的一些最常见的函数。
SequenceMatcher
SequenceMatcher 是一个比拟两个字符串并依据它们的相似性返回数据的函数。通过应用 ratio(),咱们将可能依据比率 / 百分比来量化这种相似性。
语法:
SequenceMatcher(None, string1, string2)
上面这个个简略的例子展现了该函数的作用:
from difflib import SequenceMatcher | |
phrase1 = "Tandrew loves Trees." | |
phrase2 = "Tandrew loves to mount Trees." | |
similarity = SequenceMatcher(None, phrase1, phrase2) | |
print(similarity.ratio()) | |
# Output: 0.8163265306122449 |
get_close_matches
接下来是 get_close_matches,该函数返回与作为参数传入的字符串最靠近的匹配项。
语法:
get_close_matches(word, possibilities, result_limit, min_similarity)
上面解释一下这些可能有些凌乱的参数:
- word 是函数将要查看的指标单词。
- possibilities 是一个数组,其中蕴含函数将要查找的匹配项并找到最靠近的匹配项。
- result_limit 是返回后果数量的限度(可选)。
- min_similarity 是两个单词须要具备的最小类似度能力被函数视为返回值(可选)。
上面是它的一个应用示例:
from difflib import get_close_matches | |
word = 'Tandrew' | |
possibilities = ['Andrew', 'Teresa', 'Kairu', 'Janderson', 'Drew'] | |
print(get_close_matches(word, possibilities)) | |
# Output: ['Andrew'] | |
除此之外还有几个是您能够查看的属于 Difflib 的其余一些办法和类:unified_diff、Differ 和 diff_bytes |
最近整顿了一套编程学习材料分享给大家,全是干货内容,蕴含教程视频、电子书、源码笔记、学习路线图、实战我的项目、面试题等等,关注 gzh【Python 编程学习圈】就能收费获取,回复关键词【学习材料】即可,抓紧时间吧!
2、sched
sched 是一个有用的模块,它以跨平台工作的事件调度为核心,与 Windows 上的任务调度程序等工具造成鲜明对比。大多数状况下,应用此模块时,都会应用 schedular 类。
更常见的 time 模块通常与 sched 一起应用,因为它们都解决工夫和调度的概念。
创立一个 schedular 实例:
schedular_name = sched.schedular(time.time, time.sleep)
能够从这个实例中调用各种办法。
- 调用 run() 时,调度程序中的事件 / 条目会依照程序被调用。在安顿完事件后,此函数通常呈现在程序的最初。
-
enterabs() 是一个函数,它实质上将事件增加到调度程序的外部队列中。它按以下程序接管几个参数:
- 事件执行的工夫
- 流动优先级
- 事件自身(一个函数)
- 事件函数的参数
- 事件的关键字参数字典
上面是一个示例,阐明如何一起应用这 两个函数:
import sched | |
import time | |
def event_notification(event_name): | |
print(event_name + "has started") | |
my_schedular = sched.scheduler(time.time, time.sleep) | |
closing_ceremony = my_schedular.enterabs(time.time(), 1, event_notification, ("The Closing Ceremony",)) | |
my_schedular.run() | |
# Output: The Closing Ceremon | |
y has started |
还有几个扩大 sched 模块用处的函数:cancel()、enter() 和 empty()。
3、binaascii
binaascii 是一个用于在二进制和 ASCII 之间转换的模块。
b2a_base64 是 binaascii 模块中的一种办法,它将 base64 数据转换为二进制数据。上面是这个办法的一个例子:
import base64 | |
import binascii | |
msg = "Tandrew" | |
encoded = msg.encode('ascii') | |
base64_msg = base64.b64encode(encoded) | |
decode = binascii.a2b_base64(base64_msg) | |
print(decode) | |
# Output: b'Tandrew' |
该段代码应该是不言自明的。简略地说,它波及编码、转换为 base64,以及应用 b2a_base64 办法将其转换回二进制。
以下是属于 binaascii 模块的其余一些函数:a2b_qp()、b2a_qp() 和 a2b_uu()。
4、tty
tty 是一个蕴含多个实用函数的模块,可用于解决 tty 设施。以下是它的两个函数:
- setraw() 将其参数 (fd) 中文件描述符的模式更改为 raw。
- setcbreak() 将其参数 (fd) 中的文件描述符的模式更改为 cbreak。
因为须要应用 termios 模块,该模块仅实用于 Unix,例如在上述两个函数中指定第二个参数(when=termios.TCSAFLUSH)。
5、weakref
weakref 是一个用于在 Python 中创立对对象的弱援用的模块。
弱援用是不爱护给定对象不被垃圾回收机制收集的援用。
以下是与该模块相干的两个函数:
- getweakrefcount() 承受一个对象作为参数,并返回援用该对象的弱援用的数量。
- getweakrefs() 承受一个对象并返回一个数组,其中蕴含援用该对象的所有弱援用。
weakref 及其函数的应用示例:
import weakref | |
class Book: | |
def print_type(self): | |
print("Book") | |
lotr = Book | |
num = 1 | |
rcount_lotr = str(weakref.getweakrefcount(lotr)) | |
rcount_num = str(weakref.getweakrefcount(num)) | |
rlist_lotr = str(weakref.getweakrefs(lotr)) | |
rlist_num = str(weakref.getweakrefs(num)) | |
print("number of weakrefs of'lotr':" + rcount_lotr) | |
print("number of weakrefs of'num':" + rcount_num) | |
print("Weakrefs of'lotr':" + rlist_lotr) | |
print("Weakrefs of'num':" + rlist_num) | |
# Output: | |
# number of weakrefs of 'lotr': 1 | |
# number of weakrefs of 'num': 0 | |
# Weakrefs of 'lotr': [<weakref at 0x10b978a90; to 'type' at #0x7fb7755069f0 (Book)>] | |
# Weakrefs of 'num': [] |
输入从输入的函数返回值咱们能够看到它的作用。因为 num 没有弱援用,因而 getweakrefs() 返回的数组为空。
以下是与 weakref 模块相干的一些其余函数:ref()、proxy() 和 _remove_dead_weakref()。
回顾
- Difflib 是一个用于比拟数据集,尤其是字符串的模块。例如,SequenceMatcher 能够比拟两个字符串并依据它们的相似性返回数据。
- sched 是与 time 模块一起应用的有用工具,用于应用 schedular 实例安顿事件(以函数的模式)。例如,enterabs() 将一个事件增加到调度程序的外部队列中,该队列将在调用 run() 函数时运行。
binaascii 可在二进制和 ASCII 之间转换以编码和解码数据。b2a_base64 是 binaascii 模块中的一种办法,它将 base64 数据转换为二进制数据。
tty 模块须要配合应用 termios 模块,并解决 tty 设施。它仅实用于 Unix。
weakref 用于弱援用。它的函数能够返回对象的弱援用,查找对象的弱援用数量等。其中十分应用的函数之一是 getweakrefs(),它承受一个对象并返回一个该对象蕴含的所有弱援用的数组。
要点
这些函数中的每一个都有其各自的用处,每一个都有不同水平的有用性。理解尽可能多的 Python 函数和模块十分重要,以便保持稳定的工具库,您能够在编写代码时疾速应用。
无论您的编程专业知识程度如何,您都应该一直学习。多投入一点工夫能够为您带来更多价值,并为您节俭更多将来工夫。