共计 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 函数和模块十分重要,以便保持稳定的工具库,您能够在编写代码时疾速应用。
无论您的编程专业知识程度如何,您都应该一直学习。多投入一点工夫能够为您带来更多价值,并为您节俭更多将来工夫。