Python - Tools/Utilities

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.

The dis Module

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

Example

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

The pdb Module

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

Example

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)

The profile Module

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 −

Example

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

The tabnanny Module

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.

Example

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.