Page 85 - Python Simple
P. 85
10. Giới thiệu sơ về bộ thư viện chuẩn http://www.vithon.org/tutorial/2.5/node12.html
biến như: zlib, gzip, bz2, zipfile, và tarfile.
>>> import zlib
>>> s = 'witch which has which witches wrist watch'
>>> len(s)
41
>>> t = zlib.compress(s)
>>> len(t)
37
>>> zlib.decompress(t)
'witch which has which witches wrist watch'
>>> zlib.crc32(s)
226805979
10.10 Đo lường hiệu suất
Một vài người dùng Python rất quan tâm đến việc tìm hiểu sự khác bệt về hiệu năng giữa
các phương án khác nhau của cùng một vấn đề. Python cung cấp một công cụ đo đạc để
thỏa mãn nhu cầu này.
Ví dụ, chúng ta thường muốn sử dụng tính năng gói bộ và mở gói bộ thay cho phương
pháp thông thường trong việc hoán đổi tham số. Mô-đun timeit cho thấy phương pháp
này có hiệu năng nhỉnh hơn phương pháp thông thường:
>>> 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
So sánh với độ phân biệt về thời gian và sự chính xác cao của timeit, các mô-đun
profile và pstats cung cấp các công cụ cho việc xác định các đoạn mã tiêu tốn nhiều
thời gian trong các khối mã lớn hơn.
10.11 Quản lý chất lượng
Một phương pháp để phát triển phần mềm chất lượng cao là viết các hàm kiểm tra cho
từng hàm khi viết các hàm và chạy các hàm kiểm tra một cách thường xuyên trong quá
trình phát triển phần mềm.
doctest (mô-đun) cung cấp công cụ cho việc rà soát một mô-đun và thẩm định các hàm
kiểm tra nhúng trong tài liệu của chương trình. Việc xây dựng các đoạn kiểm tra được
thực hiện đơn giản bằng cách cắt và dán một đoạn gọi hàm thông thường kèm theo kết
quả của hàm đó vào tài liệu chương trình. Việc này cải thiện đáng kể tài liệu chương
trình bởi nó cung cấp cho người dùng một ví dụ về việc sử dụng hàm và cho phép
mô-đun doctest kiểm tra tính đúng đắn của hàm này so với tài liệu:
def average(values):
"""Computes the arithmetic mean of a list of numbers.
>>> print average([20, 30, 70])
40.0
"""
return sum(values, 0.0) / len(values)
4 of 5 08/31/2011 10:28 AM