AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

六個Python開發者很少用到但功能強大的模塊

來源: 責編: 時間:2024-05-28 09:10:55 152觀看
導讀一、前言每種流行的通用編程語言都有一個功能豐富、組織良好的標準庫,可以幫助開發者使用預先開發的函數或類來提高編碼效率。一些編程語言提供預導入的對象或函數來訪問標準庫,例如JavaScript。而有些語言則提供單獨的

一、前言

每種流行的通用編程語言都有一個功能豐富、組織良好的標準庫,可以幫助開發者使用預先開發的函數或類來提高編碼效率。一些編程語言提供預導入的對象或函數來訪問標準庫,例如JavaScript。而有些語言則提供單獨的可導入模塊。Python的標準庫中有許多有用的預開發的可導入模塊,提供各種自解釋的類和函數。KOw28資訊網——每日最新資訊28at.com

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

在這篇文章中,將列舉一些鮮為人知但很有幫助的內置Python標準庫模塊,可以使用它們來提高編碼效率!KOw28資訊網——每日最新資訊28at.com

二、使用ipaddress模塊處理IP地址數據

開發者經常使用Python創建DevOps自動化腳本和計算機網絡相關程序,因此存儲和操作IP地址數據成為Python中的一般需求。內置的ipaddress模塊為IPv4和IPv6提供了預開發的類,用于存儲和操作IP地址和網絡配置。KOw28資訊網——每日最新資訊28at.com

例如,你可以從字符串或整數創建一個IPv4地址對象,如下所示。KOw28資訊網——每日最新資訊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))  #

我們可以使用傳統的算術運算符與IP地址對象進行比較和數據操作。例如,你可以增加/減少和比較IP地址對象,如以下代碼片段所示。KOw28資訊網——每日最新資訊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表示法來處理計算機網絡,并提供網絡配置。例如,以下代碼片段將打印192.150.100.0/24網絡配置中的所有可用主機IP。KOw28資訊網——每日最新資訊28at.com

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

三、使用cmd模塊創建交互式shell

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

內置的cmd模塊提供了一個預先開發的類,用于在Python中創建交互式shell。你可以用自己的Python類擴展cmd.Cmd類,并按如下方式執行命令。KOw28資訊網——每日最新資訊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程序實現了add和sub命令,每個命令接受兩個參數。例如,你可以輸入add 10 5來執行10和5的算術加法運算。這個命令行shell創建類非常靈活,而且可以自定義——它允許你自定義提示符和歡迎信息,如上面的代碼片段所示。KOw28資訊網——每日最新資訊28at.com

該模塊還能自動創建幫助命令,打印每條命令的相關信息,通過運行可用命令來嘗試使用上面的代碼。KOw28資訊網——每日最新資訊28at.com

使用cmd模塊創建的交互式shell示例使用cmd模塊創建的交互式shell示例KOw28資訊網——每日最新資訊28at.com

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

四、使用decimal和fractions模塊進行算術處理

通常,每種流行的編程語言都提供了內置的浮點類型來表示浮點數。但是,這些內置的浮點數在內部使用C語言的硬件級double或float數據類型,該類型使用IEEE-754標準浮點表示法。這種標準會導致某些十進制數四舍五入的問題。KOw28資訊網——每日最新資訊28at.com

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

內置的decimal模塊提供了另一種基于軟件的實現方式,可以處理小數,而不會出現四舍五入的問題,從而使小數計算更加精確。KOw28資訊網——每日最新資訊28at.com

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

從上面的示例中可以看出,你可以對十進制對象使用傳統的算術運算符。KOw28資訊網——每日最新資訊28at.com

內置的fractions模塊可以幫助我們存儲和計算有理數。該模塊提供的Fraction類具有以下構造函數,可以輕松創建有理數。KOw28資訊網——每日最新資訊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)

如以下代碼片段所示,Fraction類也可以使用與Decimal類類似的算術運算符。KOw28資訊網——每日最新資訊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標準模塊中的一些函數,基于Python實現。KOw28資訊網——每日最新資訊28at.com

分數加法的源代碼分數加法的源代碼KOw28資訊網——每日最新資訊28at.com

五、使用Enum模塊創建枚舉

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

Python在3.4版本中引入了標準的enum模塊,提供了一個功能完備的解決方案來創建枚舉值。KOw28資訊網——每日最新資訊28at.com

enum模塊支持基于類和函數的方式初始化枚舉集。KOw28資訊網——每日最新資訊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']

你甚至可以使用這個模塊的Flag類創建支持位運算的標志。這個功能在開發Python庫時非常有幫助,可以創建支持位運算的選項。KOw28資訊網——每日最新資訊28at.com

請看下面的例子,它使用位運算在單個標識符上存儲了多個標志值。KOw28資訊網——每日最新資訊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模塊進行生產力式元編程

元編程指的是一種將程序結構本身作為數據處理的編程概念。元編程概念通過減少特定開發需求所需的代碼行數來幫助提高編碼效率。例如,你可以通過檢查對象的方法來調用對象的所有可用方法,而不必手工靜態編寫每個類的方法。KOw28資訊網——每日最新資訊28at.com

Python提供了一些內置函數用于基本的元編程。它還提供了功能豐富的inspect模塊用于高級元編程需求。KOw28資訊網——每日最新資訊28at.com

請看下面的代碼片段,它調用了一個簡單對象的所有方法。KOw28資訊網——每日最新資訊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

這個模塊提供了一種高效的方式來檢查可調用函數。請看下面的示例代碼片段,它將在控制臺上打印函數參數。KOw28資訊網——每日最新資訊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()函數使用有序字典數據結構返回給定可調用函數的所有參數。它提取參數名稱、類型提示和默認值,如下圖所示。KOw28資訊網——每日最新資訊28at.com

使用inspect模塊檢查函數參數使用inspect模塊檢查函數參數KOw28資訊網——每日最新資訊28at.com

PythonFire開源項目利用inspect模塊將Python源代碼轉換為功能齊全的命令行程序,可以嘗試使用inspect模塊構建一些超棒的程序。KOw28資訊網——每日最新資訊28at.com

七、使用textwrap和colorsys便利模塊

有時,編程語言提供預先開發的函數或類來實現流行的通用算法,以提高開發者的工作效率。Python提供了包含文本包裝算法的textwrap模塊和包含顏色系統轉換算法的colorsys模塊。KOw28資訊網——每日最新資訊28at.com

textwrap模塊提供了預先開發的函數,用于對文本數據進行包裝、縮短、縮進和刪除。請看下面這段代碼,它對一個長段落進行了包裝。KOw28資訊網——每日最新資訊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))

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

使用Python中的textwrap模塊包裝段落KOw28資訊網——每日最新資訊28at.com

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

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

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

請看下面的示例代碼片段,它將HSV顏色值轉換為RGB。KOw28資訊網——每日最新資訊28at.com

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

該模塊沒有提供內置函數將這些0-1縮放的值轉換為十六進制表示法,但你可以通過將值乘以255來輕松完成轉換。KOw28資訊網——每日最新資訊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://www.tebozhan.com/showinfo-26-91167-0.html六個Python開發者很少用到但功能強大的模塊

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

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

下一篇: 深度解析:Elasticsearch 寫入請求處理流程

標簽:
  • 熱門焦點
Top