当前位置: 首页 > 科技观察

您可能不知道的五个有用的Python模块

时间:2023-03-15 20:59:59 科技观察

Python标准库有200多个模块,程序员可以在他们的程序中导入和使用这些模块。虽然普通程序员对这些模块中的许多都有一些经验,但他们可能还没有注意到一些有用的模块。我发现其中许多模块都包含在各个领域都很有用的功能。比较数据集、与其他功能协作以及音频处理都可以仅使用Python实现自动化。因此,我编制了一份您可能不知道的Python模块的候选清单,并对其中的一些模块进行了适当的解释,以便您将来可以理解和使用它们。所有这些模块都有不同的功能和类。我已经包含了几个鲜为人知的函数和类,所以即使您听说过这些模块,您也可能不了解它们的某些方面和用途。1.difflibDifflib是一个Python模块,专注于比较数据集,尤其是字符串。为了具体了解您可以使用此模块执行的一些操作,让我们研究一下它的一些最常用的功能。SequenceMatcherSequenceMatcher是一个比较两个字符串并根据它们的相似性返回数据的函数。通过使用ratio()我们将能够根据比率/百分比来量化这种相似性。语法:SequenceMatcher(None,string1,string2)以下简单示例显示此函数的功能:fromdifflibimportSequenceMatcherphrase1="TandrewlovesTrees."phrase2="TandrewlovestomountTrees."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_bytes2.schedsched是一个有用的模块,以跨平台工作的事件调度为中心,相比之下Windows上的TaskScheduler等工具。大多数时候使用这个模块时,都会使用调度类。比较常见的时间模块经常和sched一起使用,因为它们都处理时间和调度的概念。创建一个调度实例:scheduled_name=sched.schedular(time.time,time.sleep)可以从这个实例调用各种方法。事件执行时间活动优先级事件本身(一个函数)事件函数的参数事件的关键字参数字典当调用run()时,调度程序中的事件/条目将按顺序调用。这个函数通常出现在程序的末尾,在安排事件之后。Enterabs()是一个函数,它本质上是将事件添加到调度程序的内部队列中。它按以下顺序接收几个参数:这是一个如何一起使用这两个函数的示例:my_schedular.enterabs(time.time(),1,event_notification,("TheClosingCeremony",))my_schedular.run()#Output:TheClosingCeremonyhasstart还有几个函数扩展了sched模块的用法:cancel(),enter()和empty()。3.binaasciibBinaascii是一个二进制和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("numberofweakrefsof'lotr':"+rcount_lotr)print("numberofweakrefsof'num':"+rcount_num)print("Weakrefsof'lotr':"+rlist_lotr)print("Weakrefsof'num':"+rlist_num)#Output:#numberofweakrefsof'lotr':1#numberofweakrefsof'num':0#Weakrefsof'lotr':[]#Weakrefsof'num':[]从输出函数返回值的输出我们可以看到它的作用。因为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函数和模块很重要,这样才能维护一个稳定的工具库,您可以在编写代码时快速使用这些工具库。无论您的编程专业知识水平如何,您都应该不断学习。多投入一点时间可以为你带来更多的价值,也可以为你在未来节省更多的时间。