当前位置: 首页 > 后端技术 > Python

这5个实用的Python模块,你还不知道?

时间:2023-03-26 13:10:29 Python

Python的标准库有200多个模块,程序员可以在他们的程序中导入和使用这些模块。虽然普通程序员对这些模块中的许多都有一些经验,但他们可能还没有注意到一些有用的模块。我发现其中许多模块都包含在各个领域都很有用的功能。比较数据集、与其他功能协作以及音频处理都可以仅使用Python实现自动化。因此,我编制了一份您可能不知道的Python模块的候选清单,并对其中的一些模块进行了适当的解释,以便您将来可以理解和使用它们。所有这些模块都有不同的功能和类。本文涵盖了几个鲜为人知的函数和类,因此即使您听说过这些模块,您也可能不了解它们的某些方面和用途。1.difflibdifflib是一个专注于比较数据集(尤其是字符串)的Python模块。为了具体了解您可以使用此模块执行的一些操作,让我们研究一下它的一些最常用的功能。SequenceMatcherSequenceMatcher是一个比较两个字符串并根据它们的相似性返回数据的函数。通过使用ratio()我们将能够根据比率/百分比来量化这种相似性。语法:SequenceMatcher(None,string1,string2)以下简单示例显示了函数:fromdifflibimportSequenceMatcherphrase1="TandrewlovesTrees."phrase2="Tandrew喜欢爬树。"similarity=SequenceMatcher(None,phrase1,phrase2)print(similarity.ratio())#Output:0.8163265306122449get_close_matches接下来是get_close_matches,它返回与作为参数传入的字符串最接近的匹配。语法:get_close_matches(word,possibilities,result_limit,min_similarity)让我们来解释一下这些可能令人困惑的参数:word是函数将查看的目标词。possibilities是一个数组,其中包含函数将查找的匹配项并找到最接近的匹配项。result_limit是返回结果数量的限制(可选)。min_similarity是两个单词必须被函数视为返回值的最小相似度(可选)。下面是它的使用示例:fromdifflibimportget_close_matchesword='Tandrew'possibilities=['Andrew','Teresa','Kairu','Janderson','Drew']print(get_close_matches(word,possibilities))#Output:['Andrew']另外,还有其他几个属于Difflib的方法和类可以查看:unified_diff、Differ和diff_bytes最近整理了一套编程学习资料分享给大家,都是干货,包括教程视频,电子书、源码笔记、学习路线图、实战项目、面试题等,关注gzh【Python编程学习圈】免费获取,回复关键词【学习资料】即可,抓紧时间!2.schedsched是一个有用的模块,它以跨平台工作的事件调度为中心,与Windows上的TaskScheduler等工具形成鲜明对比。大多数时候使用这个模块时,都会用到调度类。比较常见的时间模块经常和sched一起使用,因为它们都处理时间和调度的概念。创建一个调度实例:scheduled_name=sched.schedular(time.time,time.sleep)可以从这个实例调用各种方法。调用run()时,调度程序中的事件/条目将按顺序调用。这个函数通常出现在程序的末尾,在安排事件之后。enterabs()是一个函数,它本质上是将事件添加到调度程序的内部队列中。它按以下顺序接收几个参数:事件执行时间活动优先级事件本身(函数)事件参数函数关键字事件(event_name)的参数字典:print(event_name+"hasstarted")my_schedular=sched.scheduler(time.time,time.sleep)closing_ceremony=my_schedular.enterabs(time.time(),1,event_notification,("TheClosingCeremony",))my_schedular.run()#Output:TheClosingCeremonyhasstarted还有几个函数扩展sched模块的用法:cancel()、enter()和empty()。3.binaasciibinaascii是二进制和ASCII转换的模块。b2a_base64是binaascii模块中的一个方法,将base64数据转换为二进制数据。这是此方法的示例:importbase64importbinasciimsg="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.ttytty是一个包含几个实用函数的模块,可以用来处理tty设备。下面是它的两个函数:setraw()将其参数(fd)中文件描述符的模式更改为raw。setcbreak()将其参数(fd)中文件描述符的模式更改为cbreak。由于需要使用termios模块,该模块仅在Unix上可用,如在上述两个函数中指定第二个参数(when=termios.TCSAFLUSH)。5.weakrefWeakref是Python中创建对象弱引用的模块。弱引用是不保护给定对象不被垃圾回收机制回收的引用。以下是与此模块关联的两个函数:getweakrefcount()将对象作为参数并返回引用该对象的弱引用数。getweakrefs()获取一个对象并返回一个数组,其中包含引用该对象的所有弱引用。使用weakref及其函数的示例:importweakrefclassBook:defprint_type(self):print("Book")lotr=Booknum=1rcount_lotr=str(weakref.getweakrefcount(lotr))rcount_num=str(weakref.getweakrefcount(num))rlist_lotr=str(weakref.getweakrefs(lotr))rlist_num=str(weakref.getweakrefs(num))print(“‘lotr’的弱引用数:”+rcount_lotr)print(“‘num’的弱引用数:”+rcount_num)print(“‘lotr’的弱引用:”+rlist_lotr)print(“‘num’的弱引用:”+rlist_num)#输出:#‘lotr’的弱引用数:1#‘num’的弱引用数:0#'lotr'的弱引用:[]#Weakrefsof'num':[]Output输出函数的返回值,我们可以看到它做了什么。因为num没有弱引用,所以getweakrefs()返回的数组是空的。以下是与weakref模块相关的其他一些函数:ref()、proxy()和_remove_dead_weakref()。回想一下,Difflib是一个用于比较数据集(尤其是字符串)的模块。例如,SequenceMatcher可以比较两个字符串并根据它们的相似性返回数据。sched是一个有用的工具,与时间模块一起使用,使用预定实例来安排事件(以函数的形式)。例如,enterabs()向调度程序的内部队列添加一个事件,该事件将在调用run()函数时运行。binaascii在二进制和ASCII之间转换以编码和解码数据。b2a_base64是binaascii模块中的一个方法,将base64数据转换为二进制数据。tty模块与termios模块一起工作并处理tty设备。它只适用于Unix。weakref用于弱引用。它的函数可以返回一个对象的弱引用,找到一个对象的弱引用的数量,等等。getweakrefs()是最常用的函数之一,它接受一个对象并返回该对象包含的所有弱引用的数组。重要这些功能中的每一个都有自己的目的,并且每个功能都有不同程度的有用性。了解尽可能多的Python函数和模块很重要,这样才能维护一个稳定的工具库,您可以在编写代码时快速使用这些工具库。无论您的编程专业知识水平如何,您都应该不断学习。多投入一点时间可以为你带来更多的价值,也可以为你在未来节省更多的时间。