Thư viện chuẩn đi kèm với một số mô-đun có thể được sử dụng cả như mô-đun và như các tiện ích dòng lệnh.
Mô-đun dis là trình giải mã byte của Python. Nó chuyển đổi mã byte thành một định dạng phù hợp hơn một chút cho việc tiêu thụ của con người.
Bạn có thể chạy trình giải mã từ dòng lệnh. Nó biên dịch đoạn mã đã cho và in ra mã byte đã giải mã lên STDOUT. Bạn cũng có thể sử dụng dis như một mô-đun. Hàm dis nhận một lớp, phương thức, hàm hoặc đối tượng mã làm đối số duy nhất của nó.
import dis def sum(): vara = 10 varb = 20 sum = vara + varb print ("vara + varb = %d" % sum) # Call dis function for the function. dis.dis(sum)
Điều này sẽ tạo ra kết quả sau −
3 0 LOAD_CONST 1 (10) 2 STORE_FAST 0 (vara) 4 4 LOAD_CONST 2 (20) 6 STORE_FAST 1 (varb) 6 8 LOAD_FAST 0 (vara) 10 LOAD_FAST 1 (varb) 12 BINARY_ADD 14 STORE_FAST 2 (sum) 7 16 LOAD_GLOBAL 0 (print) 18 LOAD_CONST 3 ('vara + varb = %d') 20 LOAD_FAST 2 (sum) 22 BINARY_MODULO 24 CALL_FUNCTION 1 26 POP_TOP 28 LOAD_CONST 0 (None) 30 RETURN_VALUE
Mô-đun pdb là trình gỡ lỗi chuẩn của Python. Nó dựa trên khung gỡ lỗi bdb.
Bạn có thể chạy trình gỡ lỗi từ dòng lệnh (gõ n [hoặc next] để chuyển đến dòng tiếp theo và gõ help để nhận danh sách các lệnh có sẵn) −
Trước khi bạn cố gắng chạy pdb.py , hãy thiết lập đường dẫn của bạn đúng cách đến thư mục thư viện Python. Vì vậy, hãy thử với ví dụ trên là sum.py −
$pdb.py sum.py > /test/sum.py(3)<module>() -> import dis (Pdb) n > /test/sum.py(5)<module>() -> def sum(): (Pdb) n >/test/sum.py(14)<module>() -> dis.dis(sum) (Pdb) n 6 0 LOAD_CONST 1 (10) 3 STORE_FAST 0 (vara) 7 6 LOAD_CONST 2 (20) 9 STORE_FAST 1 (varb) 9 12 LOAD_FAST 0 (vara) 15 LOAD_FAST 1 (varb) 18 BINARY_ADD 19 STORE_FAST 2 (sum) 10 22 LOAD_CONST 3 ('vara + varb = %d') 25 LOAD_FAST 2 (sum) 28 BINARY_MODULO 29 PRINT_ITEM 30 PRINT_NEWLINE 31 LOAD_CONST 0 (None) 34 RETURN_VALUE --Return-- > /test/sum.py(14)<module>()->None -v dis.dis(sum) (Pdb) n --Return-- > <string>(1)<module>()->None (Pdb)
Mô-đun profile là bộ phân tích hiệu suất chuẩn của Python. Bạn có thể chạy bộ phân tích từ dòng lệnh −
Hãy thử phân tích hiệu suất chương trình sau đây −
vara = 10 varb = 20 sum = vara + varb print "vara + varb = %d" % sum
Bây giờ, hãy thử chạy cProfile.py trên tệp này sum.py như sau −
$cProfile.py sum.py vara + varb = 30 4 function calls in 0.000 CPU seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno 1 0.000 0.000 0.000 0.000 <string>:1(<module>) 1 0.000 0.000 0.000 0.000 sum.py:3(<module>) 1 0.000 0.000 0.000 0.000 {execfile} 1 0.000 0.000 0.000 0.000 {method ......}
Mô-đun tabnanny kiểm tra các tệp nguồn Python để phát hiện sự lẫn lộn trong việc thụt lề. Nếu một tệp kết hợp cả tab và khoảng trắng theo cách làm sai lệch việc thụt lề, bất kể kích thước tab bạn đang sử dụng là gì, thì tabnanny sẽ thông báo lỗi.
Hãy thử phân tích hiệu suất chương trình sau đây −
vara = 10 varb = 20 sum = vara + varb print "vara + varb = %d" % sum
Nếu bạn thử một tệp đúng với tabnanny.py, thì nó sẽ không phàn nàn như sau −
$tabnanny.py -v sum.py 'sum.py': Clean bill of health.