Latest web development tutorials

Python3 Standard Ikhtisar Perpustakaan

System Interface operasi

modul os menyediakan sejumlah fungsi yang terkait dengan sistem operasi terkait.

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

Kami merekomendasikan penggunaan gaya "import os" bukan "dari os import *". Hal ini memastikan bahwa dengan sistem operasi bervariasi dalam os.open yang berbeda () tidak menimpa fungsi built-in open ().

Bila Anda menggunakan os seperti modul besar built-in dir () dan bantuan () fungsi berguna:

>>> 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 berkas dan manajemen direktori harian tugas ,: mod: modul shutil menyediakan antarmuka tingkat tinggi yang lebih mudah digunakan:

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

File wildcard

Modul gumpal menyediakan fungsi untuk membuat daftar file dari pencarian direktori wildcard:

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

parameter baris perintah

script utilitas umum yang sering memanggil parameter baris perintah. baris perintah argumen ini sebagai daftar disimpan dalam modul sys variabel argv. Anda bisa mendapatkan contoh output berikut, setelah pelaksanaan "python demo.py satu dua tiga" pada baris perintah:

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

Kesalahan Keluaran Redirection dan Program Pemutusan

sys, dan juga stdin, stdout dan stderr properti, bahkan ketika stdout telah diarahkan, yang terakhir juga dapat digunakan untuk menampilkan peringatan dan pesan kesalahan.

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

Kebanyakan script diarahkan untuk mengakhiri penggunaan "sys.exit ()".


pertandingan string biasa

ulang untuk modul pengolahan string yang canggih menyediakan alat ekspresi reguler. Untuk pencocokan kompleks dan manipulasi, ekspresi reguler menawarkan ringkas, solusi optimal:

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

Jika Anda hanya perlu fungsi sederhana, Anda harus mempertimbangkan metode string, karena mereka lebih mudah untuk membaca dan debug:

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

matematika

floating modul point matematika menyediakan akses ke C library yang mendasari:

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

acak menyediakan alat untuk menghasilkan angka acak.

>>> 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

akses Internet

Ada beberapa modul untuk mengakses internet dan pengolahan protokol internet. Dua dari yang paling sederhana adalah untuk memproses data yang diterima dari url dan smtplib urllib.request untuk mengirim e-mail:

>>> 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('[email protected]', '[email protected]',
... """To: [email protected]
... From: [email protected]
...
... Beware the Ides of March.
... """)
>>> server.quit()

Perhatikan bahwa contoh kedua memerlukan mail server lokal telah berjalan.


Tanggal dan Waktu

modul datetime untuk tanggal dan waktu di kedua cara sederhana dan kompleks.

Tanggal dukungan dan waktu aritmatika, sambil memfokuskan pada realisasi proses yang lebih efisien dan format output.

Modul ini juga mendukung prosesor zona 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

Data Kompresi

Modul berikut langsung mendukung data umum pengarsipan dan kompresi format: 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 kinerja

Kinerja metode yang berbeda untuk beberapa pengguna untuk memahami masalah yang sama di antara sangat tertarik. Python menyediakan alat pengukuran yang memberikan jawaban langsung untuk pertanyaan ini.

Misalnya, menggunakan tuple pengepakan dan membongkar elemen pertukaran terlihat lebih baik daripada menggunakan metode tradisional untuk lebih menarik, pendekatan modern timeit terbukti lebih cepat.

>>> 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

Dengan hormat timeit fine-grained ,: mod: profil dan pstats modul memberikan ukuran waktu untuk blok yang lebih besar dari alat kode.


uji Modul

Salah satu cara adalah untuk mengembangkan pengembangan perangkat lunak berkualitas tinggi dan pengujian masing-masing kode fungsi, dan dalam proses pembangunan sering diuji

Modul doctest menyediakan alat untuk memindai modul dan program yang tertanam dalam tes dokumen string dilakukan sesuai dengan.

konstruksi tes sederhana seperti output dipotong dan disisipkan ke string dokumen.

Sebagai contoh yang diberikan oleh pengguna, itu memperkuat dokumen, memungkinkan modul doctest memastikan kode tetap benar untuk 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()   # 自动验证嵌入测试

Tidak seperti modul doctest unittest modul sehingga mudah digunakan, tetapi dapat memberikan yang lebih komprehensif dari tes dalam file terpisah:

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