日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

六個(gè)Python開發(fā)者很少用到但功能強(qiáng)大的模塊

來源: 責(zé)編: 時(shí)間:2024-05-28 09:10:55 244觀看
導(dǎo)讀一、前言每種流行的通用編程語言都有一個(gè)功能豐富、組織良好的標(biāo)準(zhǔn)庫,可以幫助開發(fā)者使用預(yù)先開發(fā)的函數(shù)或類來提高編碼效率。一些編程語言提供預(yù)導(dǎo)入的對(duì)象或函數(shù)來訪問標(biāo)準(zhǔn)庫,例如JavaScript。而有些語言則提供單獨(dú)的

一、前言

每種流行的通用編程語言都有一個(gè)功能豐富、組織良好的標(biāo)準(zhǔn)庫,可以幫助開發(fā)者使用預(yù)先開發(fā)的函數(shù)或類來提高編碼效率。一些編程語言提供預(yù)導(dǎo)入的對(duì)象或函數(shù)來訪問標(biāo)準(zhǔn)庫,例如JavaScript。而有些語言則提供單獨(dú)的可導(dǎo)入模塊。Python的標(biāo)準(zhǔn)庫中有許多有用的預(yù)開發(fā)的可導(dǎo)入模塊,提供各種自解釋的類和函數(shù)。FX428資訊網(wǎng)——每日最新資訊28at.com

每個(gè)Python開發(fā)者通常都了解一些流行的通用標(biāo)準(zhǔn)庫模塊,如re、datetime、math、random等。這些只是Python標(biāo)準(zhǔn)庫提供的眾多模塊中的一小部分。Python提供了許多內(nèi)置的標(biāo)準(zhǔn)模塊,可以提高編碼效率,并減少外部依賴。FX428資訊網(wǎng)——每日最新資訊28at.com

在這篇文章中,將列舉一些鮮為人知但很有幫助的內(nèi)置Python標(biāo)準(zhǔn)庫模塊,可以使用它們來提高編碼效率!FX428資訊網(wǎng)——每日最新資訊28at.com

二、使用ipaddress模塊處理IP地址數(shù)據(jù)

開發(fā)者經(jīng)常使用Python創(chuàng)建DevOps自動(dòng)化腳本和計(jì)算機(jī)網(wǎng)絡(luò)相關(guān)程序,因此存儲(chǔ)和操作IP地址數(shù)據(jù)成為Python中的一般需求。內(nèi)置的ipaddress模塊為IPv4和IPv6提供了預(yù)開發(fā)的類,用于存儲(chǔ)和操作IP地址和網(wǎng)絡(luò)配置。FX428資訊網(wǎng)——每日最新資訊28at.com

例如,你可以從字符串或整數(shù)創(chuàng)建一個(gè)IPv4地址對(duì)象,如下所示。FX428資訊網(wǎng)——每日最新資訊28at.com

import ipaddressaddr_1 = ipaddress.ip_address('192.150.1.2')addr_2 = ipaddress.ip_address(202)print(addr_1)        # 192.150.1.2print(addr_2)        # 0.0.0.202print(type(addr_1))  #

我們可以使用傳統(tǒng)的算術(shù)運(yùn)算符與IP地址對(duì)象進(jìn)行比較和數(shù)據(jù)操作。例如,你可以增加/減少和比較IP地址對(duì)象,如以下代碼片段所示。FX428資訊網(wǎng)——每日最新資訊28at.com

import ipaddressaddr = ipaddress.ip_address('192.150.1.2')print(addr + 2)   # 192.150.1.4print(addr - 10)  # 192.150.0.248print(addr - 2 == ipaddress.ip_address('192.150.1.0') )  # Trueprint(addr <= ipaddress.ip_address('192.150.1.0') )      # False

該模塊還允許你使用CIDR表示法來處理計(jì)算機(jī)網(wǎng)絡(luò),并提供網(wǎng)絡(luò)配置。例如,以下代碼片段將打印192.150.100.0/24網(wǎng)絡(luò)配置中的所有可用主機(jī)IP。FX428資訊網(wǎng)——每日最新資訊28at.com

import ipaddressnet = ipaddress.ip_network('192.150.100.0/24')print(type(net))    # for h in net.hosts():    print(h)

三、使用cmd模塊創(chuàng)建交互式shell

有兩種類型的命令行界面(CLI)程序:基于進(jìn)程的程序和交互式shell。基于進(jìn)程的CLI程序通常提供各種命令和選項(xiàng)來執(zhí)行進(jìn)程,這些進(jìn)程在執(zhí)行后會(huì)終止CLI程序。與此同時(shí),交互式CLI程序通過運(yùn)行一個(gè)永無止境的命令執(zhí)行循環(huán)來接受命令。官方的Python REPL是一個(gè)很好的交互式shell示例。FX428資訊網(wǎng)——每日最新資訊28at.com

內(nèi)置的cmd模塊提供了一個(gè)預(yù)先開發(fā)的類,用于在Python中創(chuàng)建交互式shell。你可以用自己的Python類擴(kuò)展cmd.Cmd類,并按如下方式執(zhí)行命令。FX428資訊網(wǎng)——每日最新資訊28at.com

import cmdclass Calc(cmd.Cmd):    prompt = 'calc > '    intro = 'Welcome to Calc. Use add, sub, and help commands'        def do_add(self, args):        'Adds two integers and returns the result'        a, b = map(int, args.split())        print(a + b)            def do_sub(self, args):        'Subtracts two integers and returns the result'        a, b = map(int, args.split())        print(a - b)if __name__ == '__main__':    Calc().cmdloop()

上述交互式CLI程序?qū)崿F(xiàn)了add和sub命令,每個(gè)命令接受兩個(gè)參數(shù)。例如,你可以輸入add 10 5來執(zhí)行10和5的算術(shù)加法運(yùn)算。這個(gè)命令行shell創(chuàng)建類非常靈活,而且可以自定義——它允許你自定義提示符和歡迎信息,如上面的代碼片段所示。FX428資訊網(wǎng)——每日最新資訊28at.com

該模塊還能自動(dòng)創(chuàng)建幫助命令,打印每條命令的相關(guān)信息,通過運(yùn)行可用命令來嘗試使用上面的代碼。FX428資訊網(wǎng)——每日最新資訊28at.com

使用cmd模塊創(chuàng)建的交互式shell示例使用cmd模塊創(chuàng)建的交互式shell示例FX428資訊網(wǎng)——每日最新資訊28at.com

你可以通過創(chuàng)建一個(gè)帶有do_前綴的函數(shù)來添加新命令,并為幫助命令使用doc注釋。cmd模塊并不能以開發(fā)者友好的方式解析命令行選項(xiàng),但毫無疑問,你可以將argparse模塊與cmd集成,以實(shí)現(xiàn)可用命令的選項(xiàng)。FX428資訊網(wǎng)——每日最新資訊28at.com

四、使用decimal和fractions模塊進(jìn)行算術(shù)處理

通常,每種流行的編程語言都提供了內(nèi)置的浮點(diǎn)類型來表示浮點(diǎn)數(shù)。但是,這些內(nèi)置的浮點(diǎn)數(shù)在內(nèi)部使用C語言的硬件級(jí)double或float數(shù)據(jù)類型,該類型使用IEEE-754標(biāo)準(zhǔn)浮點(diǎn)表示法。這種標(biāo)準(zhǔn)會(huì)導(dǎo)致某些十進(jìn)制數(shù)四舍五入的問題。FX428資訊網(wǎng)——每日最新資訊28at.com

print(0.1 + 0.2 == 0.3)    # Falseprint(0.1 + 0.2)           # 0.30000000000000004

內(nèi)置的decimal模塊提供了另一種基于軟件的實(shí)現(xiàn)方式,可以處理小數(shù),而不會(huì)出現(xiàn)四舍五入的問題,從而使小數(shù)計(jì)算更加精確。FX428資訊網(wǎng)——每日最新資訊28at.com

from decimal import Decimalprint(Decimal('0.1') + Decimal('0.2'))  # 0.3

從上面的示例中可以看出,你可以對(duì)十進(jìn)制對(duì)象使用傳統(tǒng)的算術(shù)運(yùn)算符。FX428資訊網(wǎng)——每日最新資訊28at.com

內(nèi)置的fractions模塊可以幫助我們存儲(chǔ)和計(jì)算有理數(shù)。該模塊提供的Fraction類具有以下構(gòu)造函數(shù),可以輕松創(chuàng)建有理數(shù)。FX428資訊網(wǎng)——每日最新資訊28at.com

class fractions.Fraction(numerator=0, denominator=1)class fractions.Fraction(other_fraction)class fractions.Fraction(float)class fractions.Fraction(decimal)class fractions.Fraction(string)

如以下代碼片段所示,F(xiàn)raction類也可以使用與Decimal類類似的算術(shù)運(yùn)算符。FX428資訊網(wǎng)——每日最新資訊28at.com

from fractions import Fractionprint(Fraction('1/2') + Fraction('1/6'))  #  2/3print(Fraction(1, 8) * 2)                 #  1/4print(Fraction(0.1) / Fraction(0.2))      #  1/2

fractions模塊利用math標(biāo)準(zhǔn)模塊中的一些函數(shù),基于Python實(shí)現(xiàn)。FX428資訊網(wǎng)——每日最新資訊28at.com

分?jǐn)?shù)加法的源代碼分?jǐn)?shù)加法的源代碼FX428資訊網(wǎng)——每日最新資訊28at.com

五、使用Enum模塊創(chuàng)建枚舉

大多數(shù)編程語言都提供內(nèi)置的枚舉類型,用于創(chuàng)建一組可以輕松賦值給其他標(biāo)識(shí)符的常量。例如,你可以使用枚舉對(duì)象表示工作日或預(yù)定義的顏色集。過去,Python沒有提供創(chuàng)建枚舉的內(nèi)置方式,因此開發(fā)者不得不使用常量、字典和自定義枚舉類等替代方法。FX428資訊網(wǎng)——每日最新資訊28at.com

Python在3.4版本中引入了標(biāo)準(zhǔn)的enum模塊,提供了一個(gè)功能完備的解決方案來創(chuàng)建枚舉值。FX428資訊網(wǎng)——每日最新資訊28at.com

enum模塊支持基于類和函數(shù)的方式初始化枚舉集。FX428資訊網(wǎng)——每日最新資訊28at.com

from enum import Enumclass AppMode(Enum):    DEBUG = 1    PRODUCTION = 2    TEST = 3mode = AppMode.DEBUGprint(mode == AppMode.DEBUG)       # TruePriority = Enum('Priority', ['LOW', 'MEDIUM', 'CRITICAL'])    print([e.name for e in Priority])  # ['LOW', 'MEDIUM', 'CRITICAL']

你甚至可以使用這個(gè)模塊的Flag類創(chuàng)建支持位運(yùn)算的標(biāo)志。這個(gè)功能在開發(fā)Python庫時(shí)非常有幫助,可以創(chuàng)建支持位運(yùn)算的選項(xiàng)。FX428資訊網(wǎng)——每日最新資訊28at.com

請(qǐng)看下面的例子,它使用位運(yùn)算在單個(gè)標(biāo)識(shí)符上存儲(chǔ)了多個(gè)標(biāo)志值。FX428資訊網(wǎng)——每日最新資訊28at.com

from enum import Flag, autoclass LauncherConfig(Flag):    CENTERED_WINDOW = auto()    SHOW_FRAME = auto()    DARK_THEME = auto()    config = LauncherConfig.SHOW_FRAME | LauncherConfig.DARK_THEMEprint(config)                               # LauncherConfig.DARK_THEME|SHOW_FRAMEprint(LauncherConfig.DARK_THEME in config)  # True

六、使用inspect模塊進(jìn)行生產(chǎn)力式元編程

元編程指的是一種將程序結(jié)構(gòu)本身作為數(shù)據(jù)處理的編程概念。元編程概念通過減少特定開發(fā)需求所需的代碼行數(shù)來幫助提高編碼效率。例如,你可以通過檢查對(duì)象的方法來調(diào)用對(duì)象的所有可用方法,而不必手工靜態(tài)編寫每個(gè)類的方法。FX428資訊網(wǎng)——每日最新資訊28at.com

Python提供了一些內(nèi)置函數(shù)用于基本的元編程。它還提供了功能豐富的inspect模塊用于高級(jí)元編程需求。FX428資訊網(wǎng)——每日最新資訊28at.com

請(qǐng)看下面的代碼片段,它調(diào)用了一個(gè)簡單對(duì)象的所有方法。FX428資訊網(wǎng)——每日最新資訊28at.com

import inspectclass A:    def a(self):        print('a')    def b(self):        print('b')    def c(self):        print('c')        a = A()for _, m in inspect.getmembers(a, predicate=inspect.ismethod):    m() # a b c

這個(gè)模塊提供了一種高效的方式來檢查可調(diào)用函數(shù)。請(qǐng)看下面的示例代碼片段,它將在控制臺(tái)上打印函數(shù)參數(shù)。FX428資訊網(wǎng)——每日最新資訊28at.com

import inspectdef display(name: str, score: int = 50):    print('Hello %s, your score is %d.' % (name, score))sig = inspect.signature(display)for p in sig.parameters.values():    print(p)

signature()函數(shù)使用有序字典數(shù)據(jù)結(jié)構(gòu)返回給定可調(diào)用函數(shù)的所有參數(shù)。它提取參數(shù)名稱、類型提示和默認(rèn)值,如下圖所示。FX428資訊網(wǎng)——每日最新資訊28at.com

使用inspect模塊檢查函數(shù)參數(shù)使用inspect模塊檢查函數(shù)參數(shù)FX428資訊網(wǎng)——每日最新資訊28at.com

PythonFire開源項(xiàng)目利用inspect模塊將Python源代碼轉(zhuǎn)換為功能齊全的命令行程序,可以嘗試使用inspect模塊構(gòu)建一些超棒的程序。FX428資訊網(wǎng)——每日最新資訊28at.com

七、使用textwrap和colorsys便利模塊

有時(shí),編程語言提供預(yù)先開發(fā)的函數(shù)或類來實(shí)現(xiàn)流行的通用算法,以提高開發(fā)者的工作效率。Python提供了包含文本包裝算法的textwrap模塊和包含顏色系統(tǒng)轉(zhuǎn)換算法的colorsys模塊。FX428資訊網(wǎng)——每日最新資訊28at.com

textwrap模塊提供了預(yù)先開發(fā)的函數(shù),用于對(duì)文本數(shù)據(jù)進(jìn)行包裝、縮短、縮進(jìn)和刪除。請(qǐng)看下面這段代碼,它對(duì)一個(gè)長段落進(jìn)行了包裝。FX428資訊網(wǎng)——每日最新資訊28at.com

import textwraps = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam pulvinar tellus sit amet libero viverra feugiat. Curabitur id ultrices metus. Donec lacinia, turpis et fermentum porta, nisl turpis eleifend orci, vel bibendum sapien massa et nisi'print(textwrap.fill(s, width=50))

上述代碼片段根據(jù)給定的寬度應(yīng)用了換行字符,并打印出格式正確的段落,如下所示。FX428資訊網(wǎng)——每日最新資訊28at.com

使用Python中的textwrap模塊包裝段落FX428資訊網(wǎng)——每日最新資訊28at.com

該模塊還提供了一個(gè)函數(shù),可根據(jù)給定的字符數(shù)和后綴縮短長段落,如以下代碼片段所示。FX428資訊網(wǎng)——每日最新資訊28at.com

print(textwrap.shorten(s, 20, placeholder='...'))# Lorem ipsum dolor...

Python還通過colorsys模塊提供了幾個(gè)顏色轉(zhuǎn)換方便函數(shù),用于在流行的顏色系統(tǒng)(如RGB、HSV等)之間轉(zhuǎn)換顏色值。FX428資訊網(wǎng)——每日最新資訊28at.com

請(qǐng)看下面的示例代碼片段,它將HSV顏色值轉(zhuǎn)換為RGB。FX428資訊網(wǎng)——每日最新資訊28at.com

import colorsysprint(colorsys.hsv_to_rgb(1, 0.5, 0.2)) # (0.2, 0.1, 0.1)

該模塊沒有提供內(nèi)置函數(shù)將這些0-1縮放的值轉(zhuǎn)換為十六進(jìn)制表示法,但你可以通過將值乘以255來輕松完成轉(zhuǎn)換。FX428資訊網(wǎng)——每日最新資訊28at.com

import colorsysprint('#%.2x%.2x%.2x' % tuple(round(x * 255) /        for x in colorsys.hsv_to_rgb(1, 0.5, 0.2))) # #331a1a

本文鏈接:http://m.www897cc.com/showinfo-26-91167-0.html六個(gè)Python開發(fā)者很少用到但功能強(qiáng)大的模塊

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 簡化你的工作,七種常用的 JS 代碼片段

下一篇: 深度解析:Elasticsearch 寫入請(qǐng)求處理流程

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美aaaaaaaa牛牛影院| 亚洲二区在线视频| 欧美极品一区| 欧美日韩亚洲视频| 国产欧美一区二区三区国产幕精品 | 国产欧美一区二区精品仙草咪| 国产伦一区二区三区色一情| 国产在线不卡| 亚洲精品视频免费观看| 亚洲性人人天天夜夜摸| 欧美一区二区三区日韩视频| 老司机免费视频一区二区| 欧美日韩精品免费观看| 国产精品久久久久久久午夜| 激情婷婷亚洲| 妖精视频成人观看www| 香蕉尹人综合在线观看| 米奇777在线欧美播放| 欧美日韩一区二区在线| 国内精品免费在线观看| 99精品福利视频| 久久久久九九视频| 欧美性大战xxxxx久久久| 伊人狠狠色j香婷婷综合| 亚洲午夜影视影院在线观看| 久久视频在线看| 国产精品video| 亚洲国产精品va| 亚洲欧美日本另类| 欧美国产视频一区二区| 国产视频一区在线观看| 亚洲伦理久久| 久久久亚洲一区| 国产精品日本精品| 亚洲精品色图| 久久久久久久波多野高潮日日 | 国产日产精品一区二区三区四区的观看方式 | 国产伦精品一区| 亚洲欧洲一区二区三区| 欧美专区第一页| 国产精品国码视频| 亚洲精品视频在线观看免费| 久久精品国产精品亚洲| 欧美日韩在线播放三区| 136国产福利精品导航| 欧美一进一出视频| 欧美天堂亚洲电影院在线播放| 一区二区三区无毛| 欧美一区不卡| 国产精品成av人在线视午夜片| 亚洲激情视频网站| 久久久噜久噜久久综合| 国产精品一区二区男女羞羞无遮挡| 亚洲美女中出| 麻豆国产va免费精品高清在线| 亚洲夫妻自拍| 亚洲午夜视频| 欧美激情精品久久久久久蜜臀| 国产麻豆精品视频| 国模精品娜娜一二三区| 国产一区二区高清| 国产精品亚洲一区二区三区在线| 亚洲区中文字幕| 久久中文久久字幕| 国产专区欧美精品| 午夜一区不卡| 国产精品日韩欧美一区| 亚洲视频免费| 欧美天堂亚洲电影院在线观看| 日韩视频久久| 欧美激情亚洲激情| 亚洲黄色有码视频| 免费欧美在线| 亚洲国产人成综合网站| 久久久人人人| 国内精品国产成人| 欧美中文在线视频| 国产亚洲福利一区| 欧美一区在线直播| 国产精品一区二区久激情瑜伽| 亚洲一二三区视频在线观看| 欧美性大战久久久久| 国产精品99久久久久久久女警| 欧美日韩在线综合| 一区二区三区精品视频| 欧美日韩高清区| 99视频国产精品免费观看| 欧美久久久久久蜜桃| 国产乱码精品1区2区3区| 久久亚洲精品一区二区| 一区二区在线观看视频在线观看| 国产欧美日韩视频在线观看 | 亚洲国产一区二区a毛片| 欧美一区日韩一区| 国产欧美成人| 欧美在线观看视频一区二区三区 | 在线观看视频免费一区二区三区| 久久久www免费人成黑人精品 | 久久精品在线| 国语自产精品视频在线看一大j8| 久久另类ts人妖一区二区| 一区二区三区在线观看视频| 老司机午夜免费精品视频| 亚洲电影观看| 欧美精品一区三区| 亚洲尤物精选| 狠狠色狠狠色综合日日91app| 麻豆精品在线观看| 夜夜嗨一区二区三区| 国产精品a级| 欧美一区二区三区免费在线看 | 在线看片成人| 欧美精品日韩一区| 午夜在线a亚洲v天堂网2018| 精品91在线| 欧美精品久久久久久| 中文成人激情娱乐网| 国产精品视频xxxx| 久久久www成人免费无遮挡大片| 亚洲成人在线网| 欧美日韩亚洲高清| 性做久久久久久免费观看欧美| 怡红院精品视频| 欧美日韩aaaaa| 欧美在线播放一区| 最新成人av在线| 国产精品视频免费一区| 久热综合在线亚洲精品| 一区二区三区视频在线看| 国产欧美一区二区精品婷婷 | 国产一区二区在线免费观看| 欧美国产日韩在线| 午夜精品视频在线| 亚洲国产一区二区三区a毛片| 国产精品豆花视频| 老司机精品导航| 亚洲一区在线直播| 1024成人| 国产精品视频xxx| 欧美激情精品久久久六区热门 | 国产精品久久9| 快播亚洲色图| 巨乳诱惑日韩免费av| 亚洲视频在线免费观看| 国产欧美日韩视频| 国产午夜精品一区二区三区欧美| 亚洲精品欧美日韩专区| 国产精品永久免费在线| 国产乱子伦一区二区三区国色天香| 久久亚洲精品网站| 亚洲小说欧美另类婷婷| 在线欧美日韩| 国产精品午夜av在线| 欧美成人福利视频| 久久国产乱子精品免费女| 一本色道久久88亚洲综合88| 国产亚洲一区精品| 欧美色视频在线| 免费在线亚洲| 欧美在线短视频| 中文一区二区在线观看| 亚洲第一黄网| 国产婷婷一区二区| 欧美视频在线免费看| 久久婷婷国产综合国色天香| 亚洲欧美久久久| 99视频一区二区| 亚洲国产精品v| 国产午夜精品全部视频播放| 欧美日韩一区在线观看视频| 免费亚洲视频| 久久嫩草精品久久久精品一| 午夜欧美精品久久久久久久| 一区二区三欧美| 亚洲日本va午夜在线电影| 狠狠色伊人亚洲综合成人| 国产欧美日韩一级| 国产精品xvideos88| 欧美区在线观看| 欧美成人精品在线视频| 久久综合久久综合久久综合| 久久爱另类一区二区小说| 亚洲欧美成人在线| 亚洲午夜三级在线| 一区二区三区四区国产精品| 亚洲理论在线| 亚洲精品之草原avav久久| 亚洲黄色片网站| 亚洲国产欧美在线人成| 在线精品视频一区二区| 伊人久久男人天堂| 国内精品久久久久影院 日本资源| 国产精品青草综合久久久久99| 欧美视频官网| 欧美四级伦理在线| 欧美日韩一卡| 欧美日韩三区| 欧美日韩在线播放一区| 欧美色偷偷大香| 欧美午夜精品久久久久久孕妇| 欧美日韩一区在线观看| 国产精品扒开腿爽爽爽视频| 国产精品www994| 国产精品网站在线播放|