网易首页 > 网易号 > 正文 申请入驻

【Python】冷门,但好用的Python库!

0
分享至

来自萝卜大杂烩

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_diffDifferdiff_bytes

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 Ceremony has started

还有几个扩展sched模块用途的函数:cancel()enter()empty()

3. binaascii

binaascii是一个用于在二进制和ASCII之间转换的模块。

b2a_base64binaascii模块中的一种方法,它将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': []
# Weakrefs of 'num': []

输出从输出的函数返回值我们可以看到它的作用。由于num没有弱引用,因此getweakrefs()返回的数组为空。

以下是与weakref模块相关的一些其他函数:ref()proxy()_remove_dead_weakref()

总结


  • Difflib是一个用于比较数据集,尤其是字符串的模块。例如,SequenceMatcher可以比较两个字符串并根据它们的相似性返回数据。



  • sched是与time模块一起使用的有用工具,用于使用schedular实例安排事件(以函数的形式)。例如,enterabs()将一个事件添加到调度程序的内部队列中,该队列将在调用run()函数时运行。



  • binaascii可在二进制和ASCII之间转换以编码和解码数据。b2a_base64binaascii模块中的一种方法,它将base64数据转换为二进制数据。



  • tty模块需要配合使用termios模块,并处理tty设备。它仅适用于Unix



  • weakref用于弱引用。它的函数可以返回对象的弱引用,查找对象的弱引用数量等。其中非常使用的函数之一是getweakrefs(),它接受一个对象并返回一个该对象包含的所有弱引用的数组。


这些函数中的每一个都有其各自的用途,每一个都有不同程度的有用性。了解尽可能多的 Python 函数和模块非常重要,以便保持稳定的工具库,使得我们可以在编写代码时快速使用。

原文[1]

好了,这就是今天分享的全部内容,喜欢就点个吧~

参考资料

原文: https://python.plainenglish.io/5-python-modules-no-one-knows-about-3398f436fcfe

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
全国人大代表霍启刚:建议将香港国际机场纳入国家民航体系

全国人大代表霍启刚:建议将香港国际机场纳入国家民航体系

中国青年报
2026-03-04 23:09:11
原来他早已离世,死于心梗,留下老婆一人还带着8月大的孩子!

原来他早已离世,死于心梗,留下老婆一人还带着8月大的孩子!

草莓解说体育
2026-03-04 13:28:18
本科已严重饱和的五个专业,1、临床医学,2、法学,3、计算机

本科已严重饱和的五个专业,1、临床医学,2、法学,3、计算机

明智家庭教育
2026-01-31 10:29:14
新加坡急了,外长几乎是拍着桌子,让中国“尊重”马六甲的地位。

新加坡急了,外长几乎是拍着桌子,让中国“尊重”马六甲的地位。

南权先生
2026-01-26 15:41:26
三角洲主播直播毁号,整个国内游戏圈掀起了正义讨伐

三角洲主播直播毁号,整个国内游戏圈掀起了正义讨伐

3DM游戏
2026-03-05 13:22:11
148比2狂胜146分!中国篮坛惊现夸张比分:全场只打进一球绝了?

148比2狂胜146分!中国篮坛惊现夸张比分:全场只打进一球绝了?

篮球快餐车
2026-02-05 06:09:06
排队三小时寿司郎吃出寄生虫卵?当地市监已立案调查

排队三小时寿司郎吃出寄生虫卵?当地市监已立案调查

21世纪经济报道
2026-03-05 15:36:30
广东队损失惨重

广东队损失惨重

体育哲人
2026-03-05 19:47:38
科威特飞行员真牛!4名阵亡美军身份曝光,特朗普不满英国西班牙

科威特飞行员真牛!4名阵亡美军身份曝光,特朗普不满英国西班牙

鹰眼Defence
2026-03-04 18:38:18
连下两天“鹅毛大雪”之后,北京未来一周还有雪吗?

连下两天“鹅毛大雪”之后,北京未来一周还有雪吗?

中国能源网
2026-03-05 18:36:03
原来,费翔这辈子爱得最深的,不是叶倩文。而是大他7岁的她

原来,费翔这辈子爱得最深的,不是叶倩文。而是大他7岁的她

她时尚丫
2026-03-01 19:26:59
特朗普预计不久后将访华?娄勤俭:中美合则两利、斗则俱伤

特朗普预计不久后将访华?娄勤俭:中美合则两利、斗则俱伤

极目新闻
2026-03-04 13:25:50
南方医科大学为何败于广州医科大学,未能入选第二轮双一流高校?

南方医科大学为何败于广州医科大学,未能入选第二轮双一流高校?

牛锅巴小钒
2026-03-04 16:55:39
奉劝所有40到50岁后的中年人,只要不被开除,干到退休就是成功

奉劝所有40到50岁后的中年人,只要不被开除,干到退休就是成功

岁月有情1314
2026-03-03 14:49:44
在岸人民币兑美元跌破6.89

在岸人民币兑美元跌破6.89

每日经济新闻
2026-03-05 14:18:02
一夜暴富!20岁小哥意外中2亿彩票,瞒家人5年吃光了所有,最后你绝对想不到....

一夜暴富!20岁小哥意外中2亿彩票,瞒家人5年吃光了所有,最后你绝对想不到....

澳洲红领巾
2026-02-27 13:33:53
200亿都留不住!光刻机巨头宁愿“砸锅卖铁”也要搬离荷兰,为何

200亿都留不住!光刻机巨头宁愿“砸锅卖铁”也要搬离荷兰,为何

轩逸阿II
2026-03-05 23:50:10
为什么一眼就能看出生过孩子? 网友:有了孩子之后就不一样了

为什么一眼就能看出生过孩子? 网友:有了孩子之后就不一样了

夜深爱杂谈
2026-02-17 20:23:25
巴基斯坦要参战了?伊朗连炸10国,特朗普怒不可遏,中美再次交锋

巴基斯坦要参战了?伊朗连炸10国,特朗普怒不可遏,中美再次交锋

华史谈
2026-03-05 22:56:22
陆毅鲍蕾,早就不对劲了!

陆毅鲍蕾,早就不对劲了!

情感大头说说
2026-03-05 15:10:59
2026-03-06 02:04:49
Ai学习的老章 incentive-icons
Ai学习的老章
Ai学习的老章
3253文章数 11088关注度
往期回顾 全部

科技要闻

独家|林俊旸辞职 我们和认识他的人聊了聊

头条要闻

伊朗:已作好准备应对美国地面行动

头条要闻

伊朗:已作好准备应对美国地面行动

体育要闻

不开玩笑,没人想在季后赛碰上黄蜂

娱乐要闻

谢娜下场撕薛之谦,张杰前女友爆猛料

财经要闻

“十五五”开局之年,这么干!

汽车要闻

15.98万元起 第三代领克03大尾翼版上市

态度原创

手机
艺术
房产
家居
公开课

手机要闻

不到200g的小屏旗舰塞进7500mAh电池!一加15T手感稳了

艺术要闻

他偏要画最难的部分——这位韩国画师,只画手脚与人体,惊艳了无数人!

房产要闻

超猛!又有2800套房源砸出,2026海口安居房,彻底爆发!

家居要闻

奶白柔境 闲卧享时光

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版