Gambaran keseluruhan perpustakaan standard Python3


Antara muka sistem pengendalian

Modul os menyediakan banyak fungsi yang berkaitan dengan sistem pengendalian.

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

Adalah disyorkan untuk menggunakan gaya "import os" dan bukannya "dari import os *". Ini memastikan bahawa os.open(), yang berbeza dari sistem pengendalian ke sistem pengendalian, tidak menimpa fungsi terbina dalam open().

Fungsi dir() dan help() terbina dalam sangat berguna apabila menggunakan modul besar seperti os:

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

Untuk tugas pengurusan fail dan direktori harian, modul :mod:shutil menyediakan Antara muka peringkat tinggi yang mudah digunakan:

>>> import shutil
>>> shutil.copyfile('data.db', 'archive.db')
>>> shutil.move('/build/executables', 'installdir')

Kad bebas fail

Modul glob menyediakan fungsi untuk menjana senarai fail daripada carian kad bebas direktori:

>>> import glob
>>> glob.glob('*.py')
['primes.py', 'random.py', 'quote.py']

Parameter Baris Perintah

Skrip alat biasa sering memanggil parameter baris arahan. Parameter baris arahan ini disimpan dalam pembolehubah argv modul sys dalam bentuk senarai terpaut. Sebagai contoh, selepas melaksanakan "python demo.py satu dua tiga" pada baris arahan, anda boleh mendapatkan output berikut:

>>> import sys
>>> print(sys.argv)
['demo.py', 'one', 'two', 'three']

Ralat pengalihan semula keluaran dan penamatan program

sys dan sifat stdin, stdout dan stderr, yang terakhir boleh digunakan untuk memaparkan mesej amaran dan ralat walaupun apabila stdout dialihkan.

>>> sys.stderr.write('Warning, log file not found starting a new one\n')
Warning, log file not found starting a new one

Kebanyakan skrip menggunakan "sys.exit()" untuk penamatan terarah.


Padanan biasa rentetan

modul semula menyediakan alat ekspresi biasa untuk pemprosesan rentetan lanjutan. Untuk pemadanan dan pemprosesan yang kompleks, ungkapan biasa menyediakan penyelesaian yang ringkas dan dioptimumkan:

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

Jika anda hanya memerlukan kefungsian mudah, anda harus mempertimbangkan kaedah rentetan terlebih dahulu, kerana ia sangat mudah dan mudah dibaca dan nyahpepijat:

>>> 'tea for too'.replace('too', 'two')
'tea for two'

Math

modul matematik menyediakan akses kepada perpustakaan fungsi C yang mendasari untuk operasi titik terapung:

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

rawak menyediakan alatan untuk menjana nombor rawak.

>>> import random
>>> random.choice(['apple', 'pear', 'banana'])
'apple'
>>> 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

Lawati Internet

Terdapat beberapa modul untuk mengakses Internet dan mengendalikan protokol komunikasi rangkaian. Dua yang paling mudah ialah urllib.request untuk mengendalikan data yang diterima daripada url dan smtplib untuk menghantar e-mel:

>>> from urllib.request import urlopen
>>> for line in urlopen('http://tycho.usno.navy.mil/cgi-bin/timer.pl'):
...     line = line.decode('utf-8')  # Decoding the binary data to text.
...     if 'EST' in line or 'EDT' in line:  # look for Eastern Time
...         print(line)

<BR>Nov. 25, 09:43:32 PM EST

>>> import smtplib
>>> server = smtplib.SMTP('localhost')
>>> server.sendmail('soothsayer@example.org', 'jcaesar@example.org',
... """To: jcaesar@example.org
... From: soothsayer@example.org
...
... Beware the Ides of March.
... """)
>>> server.quit()

Perhatikan bahawa contoh kedua memerlukan pelayan mel yang sedang berjalan secara setempat.


Tarikh dan Masa

Modul datetime menyediakan kedua-dua kaedah mudah dan kompleks untuk pemprosesan tarikh dan masa.

Sambil menyokong algoritma tarikh dan masa, pelaksanaannya memfokuskan pada pemprosesan dan pemformatan output yang lebih cekap.

Modul ini juga menyokong pemprosesan zon waktu:

>>> # 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.")
'12-02-03. 02 Dec 2003 is a Tuesday on the 02 day of December.'

>>> # dates support calendar arithmetic
>>> birthday = date(1964, 7, 31)
>>> age = now - birthday
>>> age.days
14368

Mampatan data

Modul berikut secara langsung menyokong format pembungkusan dan pemampatan data biasa: zlib, gzip, bz2, zipfile , dan tarfile.

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

Metrik Prestasi

Sesetengah pengguna berminat untuk memahami perbezaan prestasi antara pendekatan berbeza untuk menyelesaikan masalah yang sama. Python menyediakan alat ukuran yang menyediakan jawapan langsung kepada soalan ini.

Contohnya, menggunakan pembungkusan tuple dan membongkar untuk menukar elemen kelihatan lebih menarik daripada menggunakan kaedah tradisional, dan masa itu membuktikan bahawa kaedah moden lebih pantas.

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

Berbanding dengan ketepatan timeit, modul :mod:profile dan pstats menyediakan alat pengukuran masa untuk blok kod yang lebih besar.


Modul ujian

Salah satu cara untuk membangunkan perisian berkualiti tinggi ialah membangunkan kod ujian untuk setiap fungsi dan mengujinya dengan kerap semasa proses pembangunan

Modul doctest menyediakan Alat yang mengimbas modul dan melaksanakan ujian berdasarkan docstrings yang dibenamkan dalam program.

Menguji konstruk adalah semudah memotong dan menampal outputnya ke dalam docstring.

Ia meningkatkan dokumentasi dengan contoh yang disediakan pengguna, membolehkan modul doctest mengesahkan bahawa hasil kod adalah konsisten dengan dokumentasi:

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()   # 自动验证嵌入测试

Modul unittest tidak semudah digunakan sebagai modul doctest, tetapi ia boleh digunakan Set ujian yang lebih komprehensif disediakan dalam fail berasingan:

import unittest

class 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