乐趣区

关于python:这5个实用的Python模块你还不知道

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 函数和模块十分重要,以便保持稳定的工具库,您能够在编写代码时疾速应用。

无论您的编程专业知识程度如何,您都应该一直学习。多投入一点工夫能够为您带来更多价值,并为您节俭更多将来工夫。

退出移动版