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