搜尋
首頁後端開發Python教學python標準庫有哪些

python標準庫有哪些

Jul 25, 2019 pm 01:26 PM
python標準函式庫

python標準庫有哪些

了解更多关于python标准库的知识,可以点击:Python教程

操作系统接口

os模块提供了不少与操作系统相关联的函数。

>>> import os
>>> os.getcwd()      # 返回当前的工作目录
'C:\\Python34'
>>> os.chdir('/server/accesslogs')   # 修改当前的工作目录
>>> os.system('mkdir today')   # 执行系统命令 mkdir 
0

建议使用 "import os" 风格而非 "from os import *"。这样可以保证随操作系统不同而有所变化的 os.open() 不会覆盖内置函数 open()。

在使用 os 这样的大型模块时内置的 dir() 和 help() 函数非常有用:

>>> import os
>>> dir(os)
<returns a list of all module functions>
>>> help(os)
<returns an extensive manual page created from the module&#39;s docstrings>

针对日常的文件和目录管理任务,:mod:shutil 模块提供了一个易于使用的高级接口:

>>> import shutil
>>> shutil.copyfile(&#39;data.db&#39;, &#39;archive.db&#39;)
>>> shutil.move(&#39;/build/executables&#39;, &#39;installdir&#39;)

文件通配符

glob模块提供了一个函数用于从目录通配符搜索中生成文件列表:

>>> import glob
>>> glob.glob(&#39;*.py&#39;)
[&#39;primes.py&#39;, &#39;random.py&#39;, &#39;quote.py&#39;]

命令行参数

通用工具脚本经常调用命令行参数。这些命令行参数以链表形式存储于 sys 模块的 argv 变量。例如在命令行中执行 "python demo.py one two three" 后可以得到以下输出结果:

>>> import sys
>>> print(sys.argv)
[&#39;demo.py&#39;, &#39;one&#39;, &#39;two&#39;, &#39;three&#39;]

错误输出重定向和终止程序

sys 还有 stdin,stdout 和 stderr 属性,即使在 stdout 被重定向时,后者也可以用于显示警告和错误信息。

>>> sys.stderr.write(&#39;Warning, log file not found starting a new one\n&#39;)
Warning, log file not found starting a new one

大多脚本的定向终止都使用 "sys.exit()"。

字符串正则匹配

re模块为高级字符串处理提供了正则表达式工具。对于复杂的匹配和处理,正则表达式提供了简洁、优化的解决方案:

>>> import re
>>> re.findall(r&#39;\bf[a-z]*&#39;, &#39;which foot or hand fell fastest&#39;)
[&#39;foot&#39;, &#39;fell&#39;, &#39;fastest&#39;]
>>> re.sub(r&#39;(\b[a-z]+) \1&#39;, r&#39;\1&#39;, 
&#39;cat in the the hat&#39;)&#39;cat in the hat&#39;

如果只需要简单的功能,应该首先考虑字符串方法,因为它们非常简单,易于阅读和调试:

>>> &#39;tea for too&#39;.replace(&#39;too&#39;, &#39;two&#39;)
&#39;tea for two&#39;

数学

math模块为浮点运算提供了对底层C函数库的访问:

>>> import math
>>> math.cos(math.pi / 4)
0.70710678118654757>>>
 math.log(1024, 2)
 10.0

random提供了生成随机数的工具。

>>> import random
>>> random.choice([&#39;apple&#39;, &#39;pear&#39;, &#39;banana&#39;])
&#39;apple&#39;
>>> random.sample(range(100), 10)   # sampling without replacement
[30, 83, 16, 4, 8, 81, 41, 50, 18, 33]
>>> random.random()    # random float
0.17970987693706186
>>> random.randrange(6)    # random integer chosen from range(6)
4

访问互联网

有几个模块用于访问互联网以及处理网络通信协议。其中最简单的两个是用于处理从 urls 接收的数据的 urllib.request 以及用于发送电子邮件的 smtplib:

>>> from urllib.request import urlopen
>>> for line in urlopen(&#39;http://tycho.usno.navy.mil/cgi-bin/timer.pl&#39;):
...     line = line.decode(&#39;utf-8&#39;)  # Decoding the binary data to text
....     if &#39;EST&#39; in line or &#39;EDT&#39; in line:  # look for Eastern Time
...         print(line)
<BR>Nov. 25, 09:43:32 PM EST
>>> import smtplib
>>> server = smtplib.SMTP(&#39;localhost&#39;)
>>> server.sendmail(&#39;soothsayer@example.org&#39;, &#39;jcaesar@example.org&#39;,
... """To: jcaesar@example.org
... From: soothsayer@example.org
...
... Beware the Ides of March.
... """)
>>> server.quit()

注意第二个例子需要本地有一个在运行的邮件服务器。

日期和时间

datetime模块为日期和时间处理同时提供了简单和复杂的方法。

支持日期和时间算法的同时,实现的重点放在更有效的处理和格式化输出。

该模块还支持时区处理:

>>> # dates are easily constructed and formatted
>>> from datetime import date
>>> now = date.today()
>>> now
datetime.date(2003, 12, 2)
>>> now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B.")
&#39;12-02-03. 02 Dec 2003 is a Tuesday on the 02 day of December.&#39;
>>> # dates support calendar arithmetic
>>> birthday = date(1964, 7, 31)
>>> age = now - birthday
>>> age.days
14368

数据压缩

以下模块直接支持通用的数据打包和压缩格式:zlib,gzip,bz2,zipfile,以及 tarfile。

>>> import zlib
>>> s = b&#39;witch which has which witches wrist watch&#39;
>>> len(s)
41
>>> t = zlib.compress(s)
>>> len(t)
37
>>> zlib.decompress(t)
b&#39;witch which has which witches wrist watch&#39;
>>> zlib.crc32(s)
226805979

性能度量

有些用户对了解解决同一问题的不同方法之间的性能差异很感兴趣。Python 提供了一个度量工具,为这些问题提供了直接答案。

例如,使用元组封装和拆封来交换元素看起来要比使用传统的方法要诱人的多,timeit 证明了现代的方法更快一些。

>>> from timeit import Timer
>>> Timer(&#39;t=a; a=b; b=t&#39;, &#39;a=1; b=2&#39;).timeit()
0.57535828626024577
>>> Timer(&#39;a,b = b,a&#39;, &#39;a=1; b=2&#39;).timeit()
0.54962537085770791

相对于 timeit 的细粒度,:mod:profile 和 pstats 模块提供了针对更大代码块的时间度量工具。

测试模块

开发高质量软件的方法之一是为每一个函数开发测试代码,并且在开发过程中经常进行测试

doctest模块提供了一个工具,扫描模块并根据程序中内嵌的文档字符串执行测试。

测试构造如同简单的将它的输出结果剪切并粘贴到文档字符串中。

通过用户提供的例子,它强化了文档,允许 doctest 模块确认代码的结果是否与文档一致:

def average(values):
    """Computes the arithmetic mean of a list of numbers.

    >>> print(average([20, 30, 70]))
    40.0
    """
    return sum(values) / len(values)import doctest
doctest.testmod()   # 自动验证嵌入测试

unittest模块不像 doctest模块那么容易使用,不过它可以在一个独立的文件里提供一个更全面的测试集:

import unittestclass TestStatisticalFunctions(unittest.TestCase):

    def test_average(self):
        self.assertEqual(average([20, 30, 70]), 40.0)
        self.assertEqual(round(average([1, 5, 7]), 1), 4.3)
        self.assertRaises(ZeroDivisionError, average, [])
        self.assertRaises(TypeError, average, 20, 30, 70)unittest.main() # Calling from the command line invokes all tests

以上是python標準庫有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Python中如何實現工廠模式?Python中如何實現工廠模式?May 16, 2025 pm 12:39 PM

在Python中實現工廠模式可以通過創建一個統一的接口來創建不同類型的對象。具體步驟如下:1.定義一個基礎類和多個繼承類,如Vehicle、Car、Plane和Train。 2.創建一個工廠類VehicleFactory,使用create_vehicle方法根據類型參數返回相應的對象實例。 3.通過工廠類實例化對象,如my_car=factory.create_vehicle("car","Tesla")。這種模式提高了代碼的可擴展性和可維護性,但需注意其複雜

python中r是什麼意思 python原始字符串前綴python中r是什麼意思 python原始字符串前綴May 16, 2025 pm 12:36 PM

在Python中,r或R前綴用於定義原始字符串,忽略所有轉義字符,讓字符串按字面意思解釋。 1)適用於處理正則表達式和文件路徑,避免轉義字符誤解。 2)不適用於需要保留轉義字符的情況,如換行符。使用時需謹慎檢查,以防意外的輸出。

Python中如何使用__del__方法清理資源?Python中如何使用__del__方法清理資源?May 16, 2025 pm 12:33 PM

在Python中,__del__方法是對象的析構函數,用於清理資源。 1)不確定的執行時間:依賴垃圾回收機制。 2)循環引用:可能導致無法及時調用,使用weakref模塊處理。 3)異常處理:在__del__中拋出的異常可能被忽略,使用try-except塊捕獲。 4)資源管理的最佳實踐:推薦使用with語句和上下文管理器管理資源。

python中pop()函數的用法 python列表pop元素移除方法詳解python中pop()函數的用法 python列表pop元素移除方法詳解May 16, 2025 pm 12:30 PM

pop()函數在Python中用於從列表中移除並返回指定位置的元素。 1)不指定索引時,pop()默認移除並返回列表的最後一個元素。 2)指定索引時,pop()移除並返回該索引位置的元素。 3)使用時需注意索引錯誤、性能問題、替代方法和列表的可變性。

如何用Python進行圖像處理?如何用Python進行圖像處理?May 16, 2025 pm 12:27 PM

Python進行圖像處理主要使用Pillow和OpenCV兩大庫。 Pillow適合簡單圖像處理,如加水印,代碼簡潔易用;OpenCV適用於復雜圖像處理和計算機視覺,如邊緣檢測,性能優越但需注意內存管理。

Python中怎樣實現主成分分析?Python中怎樣實現主成分分析?May 16, 2025 pm 12:24 PM

在Python中實現PCA可以通過手動編寫代碼或使用scikit-learn庫。手動實現PCA包括以下步驟:1)中心化數據,2)計算協方差矩陣,3)計算特徵值和特徵向量,4)排序並選擇主成分,5)投影數據到新空間。手動實現有助於深入理解算法,但scikit-learn提供更便捷的功能。

怎樣用Python計算對數?怎樣用Python計算對數?May 16, 2025 pm 12:21 PM

在Python中計算對數是一件非常簡單卻又充滿趣味的事情。讓我們從最基本的問題開始:怎樣用Python計算對數?用Python計算對數的基本方法Python的math模塊提供了計算對數的函數。讓我們來看一個簡單的例子:importmath#計算自然對數(底數為e)x=10natural_log=math.log(x)print(f"自然對數log({x})={natural_log}")#計算以10為底的對數log_base_10=math.log10(x)pri

Python中如何實現線性回歸?Python中如何實現線性回歸?May 16, 2025 pm 12:18 PM

要在Python中實現線性回歸,我們可以從多個角度出發。這不僅僅是一個簡單的函數調用,而是涉及到統計學、數學優化和機器學習的綜合應用。讓我們深入探討一下這個過程。在Python中實現線性回歸最常見的方法是使用scikit-learn庫,它提供了簡便且高效的工具。然而,如果我們想要更深入地理解線性回歸的原理和實現細節,我們也可以從頭開始編寫自己的線性回歸算法。使用scikit-learn實現線性回歸scikit-learn庫封裝了線性回歸的實現,使得我們可以輕鬆地進行建模和預測。下面是一個使用sc

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境