Chạy mã byte python

Chi tiết triển khai CPython. Bytecode là một chi tiết triển khai của trình thông dịch CPython. Không có gì đảm bảo rằng mã byte sẽ không được thêm, xóa hoặc thay đổi giữa các phiên bản Python. Việc sử dụng mô-đun này không nên được coi là hoạt động trên các máy ảo Python hoặc các bản phát hành Python

Đã thay đổi trong phiên bản 3. 6. Sử dụng 2 byte cho mỗi lệnh. Trước đây, số byte thay đổi theo lệnh.

Đã thay đổi trong phiên bản 3. 10. Đối số của lệnh nhảy, xử lý ngoại lệ và lệnh lặp hiện là lệnh offset thay vì byte offset.

Đã thay đổi trong phiên bản 3. 11. Một số hướng dẫn đi kèm với một hoặc nhiều mục nhập bộ nhớ cache nội tuyến, có dạng hướng dẫn

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
13. Các hướng dẫn này được ẩn theo mặc định, nhưng có thể được hiển thị bằng cách chuyển
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
14 tới bất kỳ tiện ích
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
15 nào. Hơn nữa, trình thông dịch hiện điều chỉnh mã byte để chuyên biệt hóa nó cho các điều kiện thời gian chạy khác nhau. Mã byte thích ứng có thể được hiển thị bằng cách chuyển
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
16.

Thí dụ. Cho hàm

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
0

def myfunc[alist]:
    return len[alist]

lệnh sau đây có thể được sử dụng để hiển thị quá trình tháo gỡ của

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
0

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE

["2" là một số dòng]

Phân tích mã byte¶

Mới trong phiên bản 3. 4

API phân tích mã byte cho phép các đoạn mã Python được bao bọc trong một đối tượng

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
2 giúp dễ dàng truy cập vào các chi tiết của mã được biên dịch

lớp dis. Mã byte[x , *, first_line=None, current_offset=None, show_caches=False, adaptive=False]

Phân tích bytecode tương ứng với một hàm, trình tạo, trình tạo không đồng bộ, coroutine, phương thức, chuỗi mã nguồn hoặc đối tượng mã [như được trả về bởi

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
3]

Đây là một trình bao bọc tiện lợi xung quanh nhiều chức năng được liệt kê bên dưới, đáng chú ý nhất là

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
4, vì việc lặp qua phiên bản
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
2 mang lại các hoạt động mã byte dưới dạng phiên bản
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
6

Nếu first_line không phải là

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
7, nó cho biết số dòng sẽ được báo cáo cho dòng nguồn đầu tiên trong mã được phân tách. Ngược lại, thông tin dòng nguồn [nếu có] được lấy trực tiếp từ đối tượng code đã tháo rời

Nếu current_offset không phải là

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
7, thì nó đề cập đến một lệnh bù trong mã được phân tách. Đặt điều này có nghĩa là
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
9 sẽ hiển thị một điểm đánh dấu "chỉ dẫn hiện tại" đối với opcode được chỉ định

Nếu show_caches là

def myfunc[alist]:
    return len[alist]
20, thì
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
9 sẽ hiển thị các mục nhập bộ đệm nội tuyến được trình thông dịch sử dụng để chuyên biệt hóa mã byte

Nếu thích ứng là

def myfunc[alist]:
    return len[alist]
20, thì
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
9 sẽ hiển thị mã byte chuyên dụng có thể khác với mã byte ban đầu

classmethod from_traceback[tb , *, show_caches=False]

Xây dựng một phiên bản

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
2 từ truy nguyên đã cho, đặt current_offset thành lệnh chịu trách nhiệm về ngoại lệ

codeobj

Đối tượng mã được biên dịch

first_line

Dòng nguồn đầu tiên của đối tượng mã [nếu có]

dis[]

Trả về chế độ xem được định dạng của các thao tác mã byte [giống như được in bởi

def myfunc[alist]:
    return len[alist]
25, nhưng được trả về dưới dạng chuỗi nhiều dòng]

thông tin[]

Trả về một chuỗi nhiều dòng được định dạng với thông tin chi tiết về đối tượng mã, chẳng hạn như

def myfunc[alist]:
    return len[alist]
26

Đã thay đổi trong phiên bản 3. 7. Điều này hiện có thể xử lý các đối tượng trình tạo coroutine và không đồng bộ.

Đã thay đổi trong phiên bản 3. 11. Đã thêm show_caches và các tham số thích ứng.

Thí dụ

def myfunc[alist]:
    return len[alist]
2

Hàm phân tích¶

Mô-đun

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
15 cũng xác định các chức năng phân tích sau để chuyển đổi đầu vào trực tiếp thành đầu ra mong muốn. Chúng có thể hữu ích nếu chỉ một thao tác được thực hiện, vì vậy đối tượng phân tích trung gian không hữu ích

dis. code_info[x]

Trả về một chuỗi nhiều dòng được định dạng với thông tin đối tượng mã chi tiết cho hàm được cung cấp, trình tạo, trình tạo không đồng bộ, coroutine, phương thức, chuỗi mã nguồn hoặc đối tượng mã

Lưu ý rằng nội dung chính xác của chuỗi thông tin mã phụ thuộc nhiều vào việc triển khai và chúng có thể thay đổi tùy ý trên máy ảo Python hoặc bản phát hành Python

Mới trong phiên bản 3. 2

Đã thay đổi trong phiên bản 3. 7. Điều này hiện có thể xử lý các đối tượng trình tạo coroutine và không đồng bộ.

dis. show_code[x , *, file=None]

In thông tin đối tượng mã chi tiết cho hàm, phương thức, chuỗi mã nguồn hoặc đối tượng mã được cung cấp vào tệp [hoặc

def myfunc[alist]:
    return len[alist]
28 nếu tệp không được chỉ định]

Đây là cách viết tắt thuận tiện cho

def myfunc[alist]:
    return len[alist]
29, nhằm mục đích khám phá tương tác tại dấu nhắc phiên dịch

Mới trong phiên bản 3. 2

Đã thay đổi trong phiên bản 3. 4. Đã thêm tham số tệp.

dis. dis[x=Không, *, file=None, depth=None, show_caches=False, adaptive=False]

Tháo rời đối tượng x. x có thể biểu thị một mô-đun, một lớp, một phương thức, một hàm, một trình tạo, một trình tạo không đồng bộ, một coroutine, một đối tượng mã, một chuỗi mã nguồn hoặc một chuỗi byte của mã byte thô. Đối với một mô-đun, nó tháo rời tất cả các chức năng. Đối với một lớp, nó phân tách tất cả các phương thức [bao gồm cả phương thức lớp và phương thức tĩnh]. Đối với một đối tượng mã hoặc chuỗi mã byte thô, nó sẽ in một dòng trên mỗi lệnh mã byte. Nó cũng phân tách đệ quy các đối tượng mã lồng nhau [mã hiểu, biểu thức trình tạo và các hàm lồng nhau và mã được sử dụng để xây dựng các lớp lồng nhau]. Đầu tiên, các chuỗi được biên dịch thành các đối tượng mã hóa với chức năng tích hợp sẵn

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
3 trước khi được phân tách. Nếu không có đối tượng nào được cung cấp, chức năng này sẽ phân tách truy nguyên cuối cùng

Việc tháo gỡ được viết dưới dạng văn bản cho đối số tệp được cung cấp nếu được cung cấp và cho

def myfunc[alist]:
    return len[alist]
28 nếu không

Độ sâu tối đa của đệ quy bị giới hạn bởi độ sâu trừ khi nó là

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
7.
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
153 có nghĩa là không đệ quy

Nếu show_caches là

def myfunc[alist]:
    return len[alist]
20, chức năng này sẽ hiển thị các mục bộ đệm nội tuyến được trình thông dịch sử dụng để chuyên biệt hóa mã byte

Nếu thích ứng là

def myfunc[alist]:
    return len[alist]
20, chức năng này sẽ hiển thị mã byte chuyên dụng có thể khác với mã byte ban đầu

Đã thay đổi trong phiên bản 3. 4. Đã thêm tham số tệp.

Đã thay đổi trong phiên bản 3. 7. Đã triển khai tách rời đệ quy và thêm tham số độ sâu.

Đã thay đổi trong phiên bản 3. 7. Điều này hiện có thể xử lý các đối tượng trình tạo coroutine và không đồng bộ.

Đã thay đổi trong phiên bản 3. 11. Đã thêm show_caches và các tham số thích ứng.

dis. distb[tb=Không có, *, file=None, show_caches=False, adaptive=False]

Tháo rời chức năng top-of-stack của truy xuất ngược, sử dụng truy xuất ngược cuối cùng nếu không có chức năng nào được thông qua. Hướng dẫn gây ra ngoại lệ được chỉ định

Việc tháo gỡ được viết dưới dạng văn bản cho đối số tệp được cung cấp nếu được cung cấp và cho

def myfunc[alist]:
    return len[alist]
28 nếu không

Đã thay đổi trong phiên bản 3. 4. Đã thêm tham số tệp.

Đã thay đổi trong phiên bản 3. 11. Đã thêm show_caches và các tham số thích ứng.

dis. tháo rời[ , lasti . =- 1, *, file=None, show_caches=False, adaptive=False]dis.disco[code , lasti=- 1, *, file=None, show_caches=False, adaptive=False]

Tháo rời một đối tượng mã, cho biết hướng dẫn cuối cùng nếu lasti được cung cấp. Đầu ra được chia thành các cột sau

  1. số dòng, cho hướng dẫn đầu tiên của mỗi dòng

  2. hướng dẫn hiện tại, được chỉ định là

    >>> dis.dis[myfunc]
      2           0 RESUME                   0
    
      3           2 LOAD_GLOBAL              1 [NULL + len]
                 14 LOAD_FAST                0 [alist]
                 16 PRECALL                  1
                 20 CALL                     1
                 30 RETURN_VALUE
    
    157,

  3. một hướng dẫn được dán nhãn, được biểu thị bằng

    >>> dis.dis[myfunc]
      2           0 RESUME                   0
    
      3           2 LOAD_GLOBAL              1 [NULL + len]
                 14 LOAD_FAST                0 [alist]
                 16 PRECALL                  1
                 20 CALL                     1
                 30 RETURN_VALUE
    
    158,

  4. địa chỉ của hướng dẫn,

  5. tên mã hoạt động,

  6. thông số hoạt động, và

  7. giải thích các tham số trong ngoặc đơn

Giải thích tham số nhận ra tên biến cục bộ và toàn cầu, giá trị hằng số, mục tiêu nhánh và toán tử so sánh

Việc tháo gỡ được viết dưới dạng văn bản cho đối số tệp được cung cấp nếu được cung cấp và cho

def myfunc[alist]:
    return len[alist]
28 nếu không

Đã thay đổi trong phiên bản 3. 4. Đã thêm tham số tệp.

Đã thay đổi trong phiên bản 3. 11. Đã thêm show_caches và các tham số thích ứng.

dis. get_instructions[x , *, first_line=None, show_caches=False, adaptive=False]

Trả về một trình lặp qua các hướng dẫn trong hàm, phương thức, chuỗi mã nguồn hoặc đối tượng mã được cung cấp

Trình vòng lặp tạo ra một loạt các bộ dữ liệu có tên

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
6 cung cấp chi tiết của từng thao tác trong mã được cung cấp

Nếu first_line không phải là

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
7, nó cho biết số dòng sẽ được báo cáo cho dòng nguồn đầu tiên trong mã được phân tách. Ngược lại, thông tin dòng nguồn [nếu có] được lấy trực tiếp từ đối tượng code đã tháo rời

Các tham số show_caches và thích ứng hoạt động như trong

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
9

Mới trong phiên bản 3. 4

Đã thay đổi trong phiên bản 3. 11. Đã thêm show_caches và các tham số thích ứng.

dis. findlinestarts[]

Hàm trình tạo này sử dụng phương thức

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
153 của mã đối tượng mã để tìm phần bù là điểm bắt đầu của các dòng trong mã nguồn. Chúng được tạo thành các cặp
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
154

Đã thay đổi trong phiên bản 3. 6. Số dòng có thể giảm dần. Trước đây, chúng luôn tăng.

Đã thay đổi trong phiên bản 3. 10. Phương thức PEP 626

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
153 được sử dụng thay cho các thuộc tính
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
156 và
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
157 của đối tượng mã.

dis. tìm nhãn[]

Phát hiện tất cả các độ lệch trong mã chuỗi bytecode được biên dịch thô là mục tiêu nhảy và trả về danh sách các độ lệch này

dis. stack_effect[opcode , oparg=None, *, jump=None]

Tính toán hiệu ứng ngăn xếp của opcode với đối số oparg

Nếu mã có mục tiêu nhảy và bước nhảy là

def myfunc[alist]:
    return len[alist]
20, thì
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
159 sẽ trả về hiệu ứng ngăn xếp của bước nhảy. Nếu bước nhảy là
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
270, nó sẽ trả về hiệu ứng ngăn xếp không nhảy. Và nếu bước nhảy là
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
7 [mặc định], nó sẽ trả về hiệu ứng ngăn xếp tối đa của cả hai trường hợp

Mới trong phiên bản 3. 4

Đã thay đổi trong phiên bản 3. 8. Đã thêm tham số nhảy.

Hướng dẫn mã byte Python¶

Hàm

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
4 và lớp
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
2 cung cấp chi tiết về hướng dẫn mã byte dưới dạng trường hợp
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
6

lớp dis. Hướng dẫn

Chi tiết cho hoạt động bytecode

opcode

mã số cho hoạt động, tương ứng với các giá trị opcode được liệt kê bên dưới và các giá trị bytecode trong bộ sưu tập opcode .

opname

tên con người có thể đọc được cho hoạt động

arg

đối số số cho hoạt động [nếu có], nếu không thì

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
7

argval

giá trị đối số đã giải quyết [nếu có], nếu không thì

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
7

argrepr

mô tả đối số hoạt động có thể đọc được của con người [nếu có], nếu không thì một chuỗi rỗng

bắt đầu chỉ mục hoạt động trong chuỗi mã byte

starts_line

dòng bắt đầu bởi opcode này [nếu có], nếu không thì

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
7

is_jump_target

def myfunc[alist]:
    return len[alist]
20 nếu mã khác nhảy tới đây, nếu không thì
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
270

vị trí

Đối tượng

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
130 giữ vị trí bắt đầu và kết thúc được bao phủ bởi hướng dẫn này

Mới trong phiên bản 3. 4

Đã thay đổi trong phiên bản 3. 11. Trường

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
131 được thêm vào.

lớp dis. Vị trí

Trong trường hợp thông tin không có sẵn, một số trường có thể là

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
7

linenoend_linenocol_offsetend_col_offset

Mới trong phiên bản 3. 11

Trình biên dịch Python hiện tạo các hướng dẫn mã byte sau

hướng dẫn chung

KHÔNG

Không làm gì cả. Được trình tối ưu hóa mã byte sử dụng làm trình giữ chỗ và để tạo các sự kiện theo dõi dòng

POP_TOP

Loại bỏ mục top-of-stack [TOS]

SAO CHÉP[i]

Đẩy phần tử thứ i lên đầu ngăn xếp. Mặt hàng không bị xóa khỏi vị trí ban đầu

Mới trong phiên bản 3. 11

Hoán đổi[i]

Hoán đổi TOS với vật phẩm ở vị trí i

Mới trong phiên bản 3. 11

CACHE

Thay vì là một hướng dẫn thực tế, opcode này được sử dụng để đánh dấu không gian bổ sung cho trình thông dịch lưu trữ dữ liệu hữu ích trực tiếp trong chính mã byte. Nó tự động bị ẩn bởi tất cả các tiện ích

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
15, nhưng có thể được xem bằng
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
14

Về mặt logic, không gian này là một phần của hướng dẫn trước. Nhiều opcode dự kiến ​​​​sẽ được theo sau bởi một số bộ đệm chính xác và sẽ hướng dẫn trình thông dịch bỏ qua chúng khi chạy

Các bộ nhớ đệm phổ biến có thể trông giống như các hướng dẫn tùy ý, vì vậy cần hết sức cẩn thận khi đọc hoặc sửa đổi mã byte thô, thích ứng có chứa dữ liệu được xử lý nhanh

Mới trong phiên bản 3. 11

phép toán một ngôi

Các phép toán đơn nguyên chiếm đỉnh ngăn xếp, áp dụng phép toán và đẩy kết quả trở lại ngăn xếp

UNARY_POSITIVE

Dụng cụ

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
135

UNARY_NEGATIVE

Dụng cụ

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
136

UNARY_NOT

Dụng cụ

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
137

UNARY_INVERT

Dụng cụ

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
138

GET_ITER

Dụng cụ

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
139

GET_YIELD_FROM_ITER

Nếu

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
140 là một trình lặp trình tạo hoặc đối tượng coroutine . Nếu không, thực hiện
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
139.

Mới trong phiên bản 3. 5

Hoạt động nhị phân và tại chỗ

Các hoạt động nhị phân loại bỏ phần trên cùng của ngăn xếp [TOS] và mục ngăn xếp trên cùng thứ hai [TOS1] khỏi ngăn xếp. Họ thực hiện thao tác và đưa kết quả trở lại ngăn xếp

Thao tác tại chỗ giống như thao tác nhị phân, ở chỗ chúng loại bỏ TOS và TOS1, đồng thời đẩy kết quả trở lại ngăn xếp, nhưng thao tác được thực hiện tại chỗ khi TOS1 hỗ trợ và TOS kết quả có thể [nhưng không có]

BINARY_OP[op]

Thực hiện các toán tử nhị phân và tại chỗ [tùy thuộc vào giá trị của op]

Mới trong phiên bản 3. 11

BINARY_SUBSCR

Dụng cụ

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
142

STORE_SUBSCR

Dụng cụ

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
143

DELETE_SUBSCR

Dụng cụ

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
144

opcode quy trình

GET_AWAITABLE[ở đâu]

Triển khai

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
145, trong đó
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
146 trả về
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
147 nếu
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
147 là đối tượng coroutine hoặc đối tượng trình tạo có cờ CO_ITERABLE_COROUTINE hoặc giải quyết
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
149

Nếu toán hạng

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
150 khác 0, nó cho biết vị trí thực hiện lệnh

  • >>> dis.dis[myfunc]
      2           0 RESUME                   0
    
      3           2 LOAD_GLOBAL              1 [NULL + len]
                 14 LOAD_FAST                0 [alist]
                 16 PRECALL                  1
                 20 CALL                     1
                 30 RETURN_VALUE
    
    151 Sau cuộc gọi tới
    >>> dis.dis[myfunc]
      2           0 RESUME                   0
    
      3           2 LOAD_GLOBAL              1 [NULL + len]
                 14 LOAD_FAST                0 [alist]
                 16 PRECALL                  1
                 20 CALL                     1
                 30 RETURN_VALUE
    
    152

  • >>> dis.dis[myfunc]
      2           0 RESUME                   0
    
      3           2 LOAD_GLOBAL              1 [NULL + len]
                 14 LOAD_FAST                0 [alist]
                 16 PRECALL                  1
                 20 CALL                     1
                 30 RETURN_VALUE
    
    153 Sau cuộc gọi tới
    >>> dis.dis[myfunc]
      2           0 RESUME                   0
    
      3           2 LOAD_GLOBAL              1 [NULL + len]
                 14 LOAD_FAST                0 [alist]
                 16 PRECALL                  1
                 20 CALL                     1
                 30 RETURN_VALUE
    
    154

Mới trong phiên bản 3. 5

Đã thay đổi trong phiên bản 3. 11. Trước đây, lệnh này không có lệnh.

GET_AITER

Dụng cụ

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
155

Mới trong phiên bản 3. 5

Đã thay đổi trong phiên bản 3. 7. Trả về các đối tượng có thể chờ đợi từ

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
156 không còn được hỗ trợ.

GET_ANEXT

Đẩy

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
157 vào ngăn xếp. Xem
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
158 để biết chi tiết về
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
159

Mới trong phiên bản 3. 5

END_ASYNC_FOR

Chấm dứt một vòng lặp

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
160. Xử lý một ngoại lệ được đưa ra khi chờ một mục tiếp theo. Nếu TOS là
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
161, hãy lấy 3 giá trị từ ngăn xếp và khôi phục trạng thái ngoại lệ bằng cách sử dụng giá trị thứ hai trong số chúng. Mặt khác, tăng lại ngoại lệ bằng cách sử dụng giá trị từ ngăn xếp. Khối xử lý ngoại lệ bị xóa khỏi ngăn xếp khối

Mới trong phiên bản 3. 8

Đã thay đổi trong phiên bản 3. 11. Biểu diễn ngoại lệ trên ngăn xếp hiện bao gồm một, không phải ba mục.

BEFORE_ASYNC_WITH

Giải quyết

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
152 và
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
154 từ đối tượng trên cùng của ngăn xếp. Đẩy
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
154 và kết quả của
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
165 vào ngăn xếp

Mới trong phiên bản 3. 5

opcode linh tinh

PRINT_EXPR

Thực hiện câu lệnh biểu thức cho chế độ tương tác. ĐKDV được xóa khỏi ngăn xếp và được in. Ở chế độ không tương tác, một câu lệnh biểu thức được kết thúc bằng

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
166

SET_ADD[i]

Cuộc gọi

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
167. Được sử dụng để triển khai hiểu tập hợp

LIST_APPEND[i]

Cuộc gọi

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
168. Được sử dụng để thực hiện hiểu danh sách

MAP_ADD[i]

Cuộc gọi

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
169. Được sử dụng để thực hiện đọc chính tả

Mới trong phiên bản 3. 1

Đã thay đổi trong phiên bản 3. 8. Giá trị bản đồ là TOS và khóa bản đồ là TOS1. Trước đây, những thứ đó đã bị đảo ngược.

Đối với tất cả các lệnh

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
00,
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
01 và
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
02, trong khi giá trị gia tăng hoặc cặp khóa/giá trị được bật ra, đối tượng vùng chứa vẫn nằm trên ngăn xếp để nó có sẵn cho các lần lặp tiếp theo của vòng lặp

RETURN_VALUE

Trả về TOS cho người gọi hàm

YIELD_VALUE

Bật TOS và tạo TOS từ trình tạo .

SETUP_ANNOTATIONS

Kiểm tra xem

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
03 có được xác định trong
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
04 hay không, nếu không, nó được thiết lập thành một
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
05 trống. Mã lệnh này chỉ được phát ra nếu một lớp hoặc thân mô-đun chứa chú thích biến tĩnh.

Mới trong phiên bản 3. 6

IMPORT_STAR

Tải trực tiếp tất cả các ký hiệu không bắt đầu bằng

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
06 từ TOS mô-đun vào không gian tên cục bộ. Mô-đun được bật sau khi tải tất cả các tên. Opcode này thực hiện
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
07

POP_EXCEPT

Bật một giá trị từ ngăn xếp, được sử dụng để khôi phục trạng thái ngoại lệ

Đã thay đổi trong phiên bản 3. 11. Biểu diễn ngoại lệ trên ngăn xếp hiện bao gồm một, không phải ba mục.

TẠO LẠI

Tăng lại ngoại lệ hiện ở trên cùng của ngăn xếp. Nếu oparg khác không, bật một giá trị bổ sung từ ngăn xếp được sử dụng để đặt

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
08 của khung hình hiện tại

Mới trong phiên bản 3. 9

Đã thay đổi trong phiên bản 3. 11. Biểu diễn ngoại lệ trên ngăn xếp hiện bao gồm một, không phải ba mục.

PUSH_EXC_INFO

Bật một giá trị từ ngăn xếp. Đẩy ngoại lệ hiện tại lên trên cùng của ngăn xếp. Đẩy giá trị ban đầu xuất hiện trở lại ngăn xếp. Được sử dụng trong xử lý ngoại lệ

Mới trong phiên bản 3. 11

CHECK_EXC_MATCH

Thực hiện đối sánh ngoại lệ cho

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
09. Kiểm tra xem TOS1 có phải là ngoại lệ phù hợp với TOS hay không. Bật TOS và đẩy kết quả boolean của bài kiểm tra

Mới trong phiên bản 3. 11

CHECK_EG_MATCH

Thực hiện đối sánh ngoại lệ cho

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
10. Áp dụng
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
11 trên nhóm ngoại lệ đại diện cho TOS1

Trong trường hợp trùng khớp, bật hai mục từ ngăn xếp và đẩy nhóm con không khớp [

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
7 trong trường hợp khớp hoàn toàn] theo sau là nhóm con khớp. Khi không có kết quả khớp, bật một mục [loại khớp] và đẩy
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
7

Mới trong phiên bản 3. 11

PREP_RERAISE_STAR

Kết hợp danh sách ngoại lệ được nâng lên và nâng cấp lại từ TOS, thành một nhóm ngoại lệ để lan truyền từ khối thử-ngoại trừ*. Sử dụng nhóm ngoại lệ ban đầu từ TOS1 để xây dựng lại cấu trúc của các ngoại lệ được xây dựng lại. Bật hai mục từ ngăn xếp và đẩy ngoại lệ để tăng lại hoặc

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
7 nếu không có mục nào

Mới trong phiên bản 3. 11

WITH_EXCEPT_START

Gọi hàm ở vị trí 4 trên ngăn xếp với các đối số [loại, val, tb] đại diện cho ngoại lệ ở đầu ngăn xếp. Được sử dụng để thực hiện cuộc gọi

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
15 khi một ngoại lệ xảy ra trong câu lệnh
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
16

Mới trong phiên bản 3. 9

Đã thay đổi trong phiên bản 3. 11. Hàm

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
17 nằm ở vị trí 4 của ngăn xếp thay vì 7. Đại diện ngoại lệ trên ngăn xếp hiện bao gồm một, không phải ba, mục.

LOAD_ASSERTION_ERROR

Đẩy

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
18 vào ngăn xếp. Được sử dụng bởi câu lệnh
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
19

Mới trong phiên bản 3. 9

LOAD_BUILD_CLASS

Đẩy

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
20 vào ngăn xếp. Nó sau đó được gọi để xây dựng một lớp

BEFORE_WITH[delta]

Mã lệnh này thực hiện một số thao tác trước khi khối with bắt đầu. Đầu tiên, nó tải

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
21 từ trình quản lý bối cảnh và đẩy nó lên ngăn xếp để sử dụng sau bởi
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
22. Sau đó,
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
23 được gọi là. Cuối cùng, kết quả của việc gọi phương thức
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
23 được đẩy lên ngăn xếp

Mới trong phiên bản 3. 11

GET_LEN

Đẩy

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
25 vào ngăn xếp

Mới trong phiên bản 3. 10

MATCH_MAPPING

Nếu TOS là một phiên bản của

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
26 [hoặc, về mặt kỹ thuật hơn. nếu nó có cờ
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
27 được đặt trong
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
28 của nó], đẩy
def myfunc[alist]:
    return len[alist]
20 vào ngăn xếp. Nếu không, đẩy
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
270

Mới trong phiên bản 3. 10

MATCH_SEQUENCE

Nếu TOS là phiên bản của

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
31 và không phải là phiên bản của
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
32/
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
33/
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
34 [hoặc, về mặt kỹ thuật hơn. nếu nó có cờ
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
35 được đặt trong
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
28 của nó], đẩy
def myfunc[alist]:
    return len[alist]
20 vào ngăn xếp. Nếu không, đẩy
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
270

Mới trong phiên bản 3. 10

MATCH_KEYS

TOS là một bộ khóa ánh xạ và TOS1 là đối tượng khớp. Nếu TOS1 chứa tất cả các khóa trong TOS, hãy nhấn một

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
39 chứa các giá trị tương ứng. Nếu không, đẩy
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
7

Mới trong phiên bản 3. 10

Đã thay đổi trong phiên bản 3. 11. Trước đây, hướng dẫn này cũng đẩy một giá trị boolean cho biết thành công [

def myfunc[alist]:
    return len[alist]
20] hoặc thất bại [
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
270].

STORE_NAME[namei]

Dụng cụ

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
43. namei là chỉ mục của tên trong thuộc tính
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
44 của đối tượng mã. Trình biên dịch cố gắng sử dụng
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
45 hoặc
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
46 nếu có thể

DELETE_NAME[namei]

Triển khai

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
47, trong đó namei là chỉ mục cho thuộc tính
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
44 của đối tượng mã

UNPACK_SEQUENCE[số lượng]

Giải nén TOS thành các giá trị riêng lẻ, được đặt vào ngăn xếp từ phải sang trái

UNPACK_EX[số lượng]

Thực hiện chuyển nhượng với mục tiêu được gắn dấu sao. Giải nén một iterable trong TOS thành các giá trị riêng lẻ, trong đó tổng số giá trị có thể nhỏ hơn số mục trong iterable. một trong những giá trị mới sẽ là danh sách tất cả các mục còn sót lại

Số lượng byte thấp là số lượng giá trị trước giá trị danh sách, byte cao của số lượng giá trị sau nó. Các giá trị kết quả được đặt vào ngăn xếp từ phải sang trái

STORE_ATTR[namei]

Triển khai

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
49, trong đó namei là chỉ mục của tên trong
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
44

DELETE_ATTR[namei]

Triển khai

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
51, sử dụng namei làm chỉ mục cho
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
44

STORE_GLOBAL[namei]

Hoạt động như

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
53, nhưng lưu trữ tên dưới dạng toàn cầu

DELETE_GLOBAL[namei]

Hoạt động như

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
54, nhưng xóa tên chung

LOAD_CONST[consti]

Đẩy

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
55 lên ngăn xếp

LOAD_NAME[namei]

Đẩy giá trị được liên kết với

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
56 vào ngăn xếp

BUILD_TUPLE[số lượng]

Tạo một bộ dữ liệu tiêu thụ các mục đếm từ ngăn xếp và đẩy bộ kết quả vào ngăn xếp

BUILD_LIST[số lượng]

Hoạt động như

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
57, nhưng tạo một danh sách

BUILD_SET[số lượng]

Hoạt động như

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
57, nhưng tạo một bộ

BUILD_MAP[số lượng]

Đẩy một đối tượng từ điển mới vào ngăn xếp. Bật

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
59 mục để từ điển giữ các mục đếm.
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
60

Đã thay đổi trong phiên bản 3. 5. Từ điển được tạo từ các mục trong ngăn xếp thay vì tạo một từ điển trống được định cỡ trước để chứa các mục đếm.

BUILD_CONST_KEY_MAP[số lượng]

Phiên bản

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
61 chuyên dùng cho khóa hằng số. Bật phần tử trên cùng trên ngăn xếp chứa một bộ khóa, sau đó bắt đầu từ
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
62, bật các giá trị đếm để tạo thành các giá trị trong từ điển được tạo

Mới trong phiên bản 3. 6

BUILD_STRING[số lượng]

Nối các chuỗi đếm từ ngăn xếp và đẩy chuỗi kết quả vào ngăn xếp

Mới trong phiên bản 3. 6

LIST_TO_TUPLE

Bật một danh sách từ ngăn xếp và đẩy một bộ chứa các giá trị giống nhau

Mới trong phiên bản 3. 9

LIST_EXTEND[i]

Cuộc gọi

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
63. Dùng để xây dựng danh sách

Mới trong phiên bản 3. 9

SET_UPDATE[i]

Cuộc gọi

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
64. Được sử dụng để xây dựng bộ

Mới trong phiên bản 3. 9

DICT_UPDATE[i]

Cuộc gọi

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
65. Được sử dụng để xây dựng dicts

Mới trong phiên bản 3. 9

DICT_MERGE[i]

Giống như

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
66 nhưng đưa ra một ngoại lệ cho các khóa trùng lặp

Mới trong phiên bản 3. 9

LOAD_ATTR[namei]

Thay thế TOS bằng

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
67

COMPARE_OP[opname]

Thực hiện một phép toán Boolean. Tên hoạt động có thể được tìm thấy trong

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
68

IS_OP[đảo ngược]

Thực hiện so sánh

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
69 hoặc
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
70 nếu
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
71 là 1

Mới trong phiên bản 3. 9

CONTAINS_OP[đảo ngược]

Thực hiện so sánh

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
72 hoặc
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
73 nếu
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
71 là 1

Mới trong phiên bản 3. 9

IMPORT_NAME[namei]

Nhập mô-đun

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
56. TOS và TOS1 được bật lên và cung cấp các đối số từ danh sách và cấp độ của
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
76. Đối tượng mô-đun được đẩy lên ngăn xếp. Không gian tên hiện tại không bị ảnh hưởng. đối với một câu lệnh nhập thích hợp, một lệnh
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
45 tiếp theo sẽ sửa đổi không gian tên

IMPORT_FROM[namei]

Tải thuộc tính

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
56 từ mô-đun được tìm thấy trong TOS. Đối tượng kết quả được đẩy vào ngăn xếp, sau đó được lưu trữ bằng lệnh
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
45

JUMP_FORWARD[delta]

Tăng bộ đếm mã byte theo delta

NHẢY_QUAY LÙI[delta]

Giảm bộ đếm bytecode theo delta. Kiểm tra các ngắt

Mới trong phiên bản 3. 11

JUMP_BACKWARD_NO_INTERRUPT[delta]

Giảm bộ đếm bytecode theo delta. Không kiểm tra ngắt

Mới trong phiên bản 3. 11

POP_JUMP_FORWARD_IF_TRUE[delta]

Nếu TOS là true, tăng bộ đếm mã byte theo delta. TOS đã xuất hiện

Mới trong phiên bản 3. 11

POP_JUMP_BACKWARD_IF_TRUE[delta]

Nếu TOS là đúng, hãy giảm bộ đếm bytecode theo delta. TOS đã xuất hiện

Mới trong phiên bản 3. 11

POP_JUMP_FORWARD_IF_FALSE[delta]

Nếu TOS là sai, hãy tăng bộ đếm mã byte theo delta. TOS đã xuất hiện

Mới trong phiên bản 3. 11

POP_JUMP_BACKWARD_IF_FALSE[delta]

Nếu TOS là sai, hãy giảm bộ đếm mã byte theo delta. TOS đã xuất hiện

Mới trong phiên bản 3. 11

POP_JUMP_FORWARD_IF_NOT_NONE[delta]

Nếu TOS không phải là

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
7, hãy tăng bộ đếm mã byte theo delta. TOS đã xuất hiện

Mới trong phiên bản 3. 11

POP_JUMP_BACKWARD_IF_NOT_NONE[delta]

Nếu TOS không phải là

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
7, hãy giảm bộ đếm mã byte theo delta. TOS đã xuất hiện

Mới trong phiên bản 3. 11

POP_JUMP_FORWARD_IF_NONE[delta]

Nếu TOS là

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
7, hãy tăng bộ đếm mã byte theo delta. TOS đã xuất hiện

Mới trong phiên bản 3. 11

POP_JUMP_BACKWARD_IF_NONE[delta]

Nếu TOS là

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
7, hãy giảm bộ đếm bytecode theo delta. TOS đã xuất hiện

Mới trong phiên bản 3. 11

JUMP_IF_TRUE_OR_POP[delta]

Nếu TOS là true, tăng bộ đếm mã byte theo delta và để TOS trên ngăn xếp. Nếu không [ĐKDV là sai], TOS sẽ xuất hiện

Mới trong phiên bản 3. 1

Đã thay đổi trong phiên bản 3. 11. Oparg bây giờ là một delta tương đối chứ không phải là một mục tiêu tuyệt đối.

JUMP_IF_FALSE_OR_POP[delta]

Nếu TOS là sai, hãy tăng bộ đếm mã byte theo delta và để TOS trên ngăn xếp. Nếu không [ĐKDV là đúng], TOS sẽ xuất hiện

Mới trong phiên bản 3. 1

Đã thay đổi trong phiên bản 3. 11. Oparg bây giờ là một delta tương đối chứ không phải là một mục tiêu tuyệt đối.

FOR_ITER[delta]

TOS là một trình lặp . Gọi phương thức

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
84 của nó. Nếu điều này mang lại một giá trị mới, hãy đẩy nó vào ngăn xếp [để lại trình vòng lặp bên dưới nó]. Nếu trình vòng lặp cho biết nó đã hết, TOS sẽ xuất hiện và bộ đếm mã byte được tăng theo delta.

LOAD_GLOBAL[namei]

Tải toàn cầu có tên

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
85 vào ngăn xếp

Đã thay đổi trong phiên bản 3. 11. Nếu bit thấp của

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
86 được đặt, thì một
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
87 sẽ được đẩy vào ngăn xếp trước biến toàn cục.

LOAD_FAST[var_num]

Đẩy một tham chiếu đến

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
88 cục bộ vào ngăn xếp

STORE_FAST[var_num]

Lưu TOS vào

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
88 cục bộ

DELETE_FAST[var_num]

Xóa địa phương

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
88

MAKE_CELL[i]

Tạo một ô mới trong khe

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
91. Nếu vị trí đó trống thì giá trị đó được lưu vào ô mới

Mới trong phiên bản 3. 11

LOAD_CLOSURE[i]

Đẩy một tham chiếu đến ô chứa trong khe

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
91 của bộ lưu trữ “fastlocals”. Tên của biến là
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
93

Lưu ý rằng

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
94 thực sự là một bí danh cho
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
95. Nó tồn tại để giữ cho mã byte dễ đọc hơn một chút

Đã thay đổi trong phiên bản 3. 11. ______091 không còn được bù theo độ dài của

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
97.

LOAD_DEREF[i]

Tải ô chứa trong khe

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
91 của bộ lưu trữ "cục bộ nhanh". Đẩy một tham chiếu đến đối tượng mà ô chứa trên ngăn xếp

Đã thay đổi trong phiên bản 3. 11. ______091 không còn được bù theo độ dài của

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
97.

LOAD_CLASSDEREF[i]

Giống như

def myfunc[alist]:
    return len[alist]
201 nhưng trước tiên hãy kiểm tra từ điển địa phương trước khi tham khảo ô. Điều này được sử dụng để tải các biến miễn phí trong nội dung lớp

Mới trong phiên bản 3. 4

Đã thay đổi trong phiên bản 3. 11. ______091 không còn được bù theo độ dài của

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
97.

STORE_DEREF[i]

Lưu trữ TOS vào ô chứa trong khe

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
91 của bộ lưu trữ “địa phương nhanh”

Đã thay đổi trong phiên bản 3. 11. ______091 không còn được bù theo độ dài của

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
97.

DELETE_DEREF[i]

Làm trống ô chứa trong khe

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
91 của bộ lưu trữ "địa phương nhanh". Được sử dụng bởi câu lệnh
def myfunc[alist]:
    return len[alist]
208

Mới trong phiên bản 3. 2

Đã thay đổi trong phiên bản 3. 11. ______091 không còn được bù theo độ dài của

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
97.

COPY_FREE_VARS[n]

Sao chép các biến miễn phí

def myfunc[alist]:
    return len[alist]
211 từ bao đóng vào khung. Loại bỏ nhu cầu về mã đặc biệt ở phía người gọi khi gọi các lần đóng

Mới trong phiên bản 3. 11

RAISE_VAARGS[argc]

Đưa ra một ngoại lệ bằng cách sử dụng một trong 3 dạng của câu lệnh

def myfunc[alist]:
    return len[alist]
212, tùy thuộc vào giá trị của argc

  • 0.

    def myfunc[alist]:
        return len[alist]
    
    212 [tăng lại ngoại lệ trước đó]

  • 1.

    def myfunc[alist]:
        return len[alist]
    
    214 [tăng trường hợp ngoại lệ hoặc loại tại
    >>> dis.dis[myfunc]
      2           0 RESUME                   0
    
      3           2 LOAD_GLOBAL              1 [NULL + len]
                 14 LOAD_FAST                0 [alist]
                 16 PRECALL                  1
                 20 CALL                     1
                 30 RETURN_VALUE
    
    140]

  • 2.

    def myfunc[alist]:
        return len[alist]
    
    216 [tăng trường hợp ngoại lệ hoặc loại tại
    >>> dis.dis[myfunc]
      2           0 RESUME                   0
    
      3           2 LOAD_GLOBAL              1 [NULL + len]
                 14 LOAD_FAST                0 [alist]
                 16 PRECALL                  1
                 20 CALL                     1
                 30 RETURN_VALUE
    
    62 với
    def myfunc[alist]:
        return len[alist]
    
    218 được đặt thành
    >>> dis.dis[myfunc]
      2           0 RESUME                   0
    
      3           2 LOAD_GLOBAL              1 [NULL + len]
                 14 LOAD_FAST                0 [alist]
                 16 PRECALL                  1
                 20 CALL                     1
                 30 RETURN_VALUE
    
    140]

GỌI[argc]

Gọi một đối tượng có thể gọi được với số lượng đối số được chỉ định bởi

def myfunc[alist]:
    return len[alist]
220, bao gồm các đối số được đặt tên được chỉ định bởi
def myfunc[alist]:
    return len[alist]
221 trước đó, nếu có. Trên ngăn xếp là [theo thứ tự tăng dần], hoặc

  • VÔ GIÁ TRỊ

  • có thể gọi được

  • Các đối số vị trí

  • Các đối số được đặt tên

hoặc

  • có thể gọi được

  • def myfunc[alist]:
        return len[alist]
    
    222

  • Các đối số vị trí còn lại

  • Các đối số được đặt tên

def myfunc[alist]:
    return len[alist]
220 là tổng số đối số vị trí và đối số được đặt tên, ngoại trừ
def myfunc[alist]:
    return len[alist]
222 khi không có
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
87

def myfunc[alist]:
    return len[alist]
226 bật tất cả các đối số và đối tượng có thể gọi được ra khỏi ngăn xếp, gọi đối tượng có thể gọi được bằng các đối số đó và đẩy giá trị trả về được trả về bởi đối tượng có thể gọi được

Mới trong phiên bản 3. 11

CALL_FUNCTION_EX[cờ]

Gọi một đối tượng có thể gọi được với tập hợp các đối số vị trí và từ khóa có thể thay đổi. Nếu bit cờ thấp nhất được đặt, thì đỉnh của ngăn xếp chứa một đối tượng ánh xạ chứa các đối số từ khóa bổ sung. Trước khi có thể gọi được gọi, đối tượng ánh xạ và đối tượng có thể lặp lại được "giải nén" và nội dung của chúng được chuyển vào dưới dạng đối số từ khóa và vị trí tương ứng.

def myfunc[alist]:
    return len[alist]
227 bật tất cả các đối số và đối tượng có thể gọi được ra khỏi ngăn xếp, gọi đối tượng có thể gọi được bằng các đối số đó và đẩy giá trị trả về được trả về bởi đối tượng có thể gọi được

Mới trong phiên bản 3. 6

LOAD_METHOD[namei]

Tải một phương thức có tên

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
56 từ đối tượng TOS. TOS đã xuất hiện. Mã byte này phân biệt hai trường hợp. nếu TOS có một phương thức có tên chính xác, mã byte sẽ đẩy phương thức không liên kết và TOS. TOS sẽ được sử dụng làm đối số đầu tiên [
def myfunc[alist]:
    return len[alist]
222] bởi
def myfunc[alist]:
    return len[alist]
226 khi gọi phương thức không liên kết. Mặt khác,
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
87 và đối tượng trả về bằng tra cứu thuộc tính được đẩy

Mới trong phiên bản 3. 7

PRECALL[argc]

Tiền tố

def myfunc[alist]:
    return len[alist]
226. Về mặt logic, đây là một không có op. Nó tồn tại để cho phép chuyên môn hóa hiệu quả các cuộc gọi.
def myfunc[alist]:
    return len[alist]
220 là số đối số như được mô tả trong
def myfunc[alist]:
    return len[alist]
226

Mới trong phiên bản 3. 11

PUSH_NULL

Đẩy một

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
87 vào ngăn xếp. Được sử dụng trong chuỗi cuộc gọi để khớp với
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
87 được đẩy bởi
def myfunc[alist]:
    return len[alist]
237 cho các cuộc gọi không theo phương thức

Mới trong phiên bản 3. 11

KW_NAMES[i]

Tiền tố

def myfunc[alist]:
    return len[alist]
238. Lưu trữ một tham chiếu đến
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
55 thành một biến nội bộ để sử dụng bởi
def myfunc[alist]:
    return len[alist]
226.
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
55 phải là một bộ chuỗi

Mới trong phiên bản 3. 11

MAKE_FUNCTION[cờ]

Đẩy một đối tượng hàm mới vào ngăn xếp. Từ dưới lên trên, ngăn xếp đã sử dụng phải bao gồm các giá trị nếu đối số mang một giá trị cờ đã chỉ định

  • def myfunc[alist]:
        return len[alist]
    
    242 một bộ giá trị mặc định cho các tham số chỉ vị trí và vị trí-hoặc-từ khóa theo thứ tự vị trí

  • def myfunc[alist]:
        return len[alist]
    
    243 một từ điển các giá trị mặc định của tham số chỉ từ khóa

  • def myfunc[alist]:
        return len[alist]
    
    244 một bộ chuỗi chứa các chú thích của tham số

  • def myfunc[alist]:
        return len[alist]
    
    245 một bộ chứa các ô cho các biến tự do, thực hiện đóng

  • mã được liên kết với chức năng [tại TOS1]

  • tên đủ điều kiện của chức năng [tại TOS]

Đã thay đổi trong phiên bản 3. 10. Giá trị cờ

def myfunc[alist]:
    return len[alist]
244 là một bộ chuỗi thay vì từ điển

BUILD_SLICE[argc]

Đẩy một đối tượng lát trên ngăn xếp. argc phải là 2 hoặc 3. Nếu là 2,

def myfunc[alist]:
    return len[alist]
247 được đẩy; . Xem hàm tích hợp
def myfunc[alist]:
    return len[alist]
249 để biết thêm thông tin

EXTENED_ARG[ext]

Tiền tố bất kỳ opcode nào có đối số quá lớn để khớp với một byte mặc định. ext giữ một byte bổ sung hoạt động như các bit cao hơn trong đối số. Đối với mỗi mã lệnh, tối đa ba tiền tố

def myfunc[alist]:
    return len[alist]
250 được cho phép, tạo thành một đối số từ hai byte đến bốn byte

FORMAT_VALUE[cờ]

Được sử dụng để triển khai các chuỗi ký tự được định dạng [chuỗi f]. Bật một fmt_spec tùy chọn từ ngăn xếp, sau đó là một giá trị bắt buộc. cờ được hiểu như sau

  • def myfunc[alist]:
        return len[alist]
    
    251. giá trị được định dạng nguyên trạng

  • def myfunc[alist]:
        return len[alist]
    
    252. gọi
    def myfunc[alist]:
        return len[alist]
    
    253 trên giá trị trước khi định dạng nó

  • def myfunc[alist]:
        return len[alist]
    
    254. gọi
    def myfunc[alist]:
        return len[alist]
    
    255 trên giá trị trước khi định dạng nó

  • def myfunc[alist]:
        return len[alist]
    
    256. gọi
    def myfunc[alist]:
        return len[alist]
    
    257 trên giá trị trước khi định dạng nó

  • def myfunc[alist]:
        return len[alist]
    
    258. bật fmt_spec từ ngăn xếp và sử dụng nó, nếu không hãy sử dụng fmt_spec trống

Định dạng được thực hiện bằng cách sử dụng

def myfunc[alist]:
    return len[alist]
259. Kết quả được đẩy vào ngăn xếp

Mới trong phiên bản 3. 6

MATCH_CLASS[số lượng]

TOS là một bộ tên thuộc tính từ khóa, TOS1 là lớp được đối sánh và TOS2 là chủ đề đối sánh. số lượng là số lượng mẫu phụ vị trí

Bật TOS, TOS1 và TOS2. Nếu TOS2 là một phiên bản của TOS1 và có các thuộc tính từ khóa và vị trí theo yêu cầu của số lượng và TOS, hãy đẩy một bộ thuộc tính được trích xuất. Nếu không, đẩy

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
7

Mới trong phiên bản 3. 10

Đã thay đổi trong phiên bản 3. 11. Trước đây, hướng dẫn này cũng đẩy một giá trị boolean cho biết thành công [

def myfunc[alist]:
    return len[alist]
20] hoặc thất bại [
>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
270].

TIẾP TỤC[ở đâu]

không hoạt động. Thực hiện kiểm tra theo dõi, gỡ lỗi và tối ưu hóa nội bộ

Toán hạng

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
150 đánh dấu vị trí của
def myfunc[alist]:
    return len[alist]
264

  • def myfunc[alist]:
        return len[alist]
    
    265 Bắt đầu một chức năng

  • >>> dis.dis[myfunc]
      2           0 RESUME                   0
    
      3           2 LOAD_GLOBAL              1 [NULL + len]
                 14 LOAD_FAST                0 [alist]
                 16 PRECALL                  1
                 20 CALL                     1
                 30 RETURN_VALUE
    
    151 Sau một biểu thức
    def myfunc[alist]:
        return len[alist]
    
    267

  • >>> dis.dis[myfunc]
      2           0 RESUME                   0
    
      3           2 LOAD_GLOBAL              1 [NULL + len]
                 14 LOAD_FAST                0 [alist]
                 16 PRECALL                  1
                 20 CALL                     1
                 30 RETURN_VALUE
    
    153 Sau một biểu thức
    def myfunc[alist]:
        return len[alist]
    
    269

  • def myfunc[alist]:
        return len[alist]
    
    270 Sau một biểu thức
    def myfunc[alist]:
        return len[alist]
    
    271

Mới trong phiên bản 3. 11

RETURN_GENERATOR

Tạo trình tạo, coroutine hoặc trình tạo không đồng bộ từ khung hiện tại. Xóa khung hiện tại và trả về trình tạo mới được tạo

Mới trong phiên bản 3. 11

GỬI

Gửi

>>> dis.dis[myfunc]
  2           0 RESUME                   0

  3           2 LOAD_GLOBAL              1 [NULL + len]
             14 LOAD_FAST                0 [alist]
             16 PRECALL                  1
             20 CALL                     1
             30 RETURN_VALUE
7 đến trình tạo phụ của trình tạo này. Được sử dụng trong câu lệnh
def myfunc[alist]:
    return len[alist]
269 và
def myfunc[alist]:
    return len[alist]
271

Mới trong phiên bản 3. 11

ASYNC_GEN_WRAP

Kết thúc giá trị trên đầu ngăn xếp trong một

def myfunc[alist]:
    return len[alist]
275. Được sử dụng để mang lại trong trình tạo không đồng bộ

Mới trong phiên bản 3. 11

HAVE_ARGUMENT

Đây không thực sự là một opcode. Nó xác định đường phân chia giữa các opcode không sử dụng đối số của chúng và những mã có sử dụng [lần lượt là ___1276 và

def myfunc[alist]:
    return len[alist]
277]

Đã thay đổi trong phiên bản 3. 6. Bây giờ mọi lệnh đều có đối số, nhưng opcodes

def myfunc[alist]:
    return len[alist]
276 bỏ qua nó. Trước đây, chỉ opcodes
def myfunc[alist]:
    return len[alist]
277 có tranh luận.

Bộ sưu tập opcode¶

Các bộ sưu tập này được cung cấp để tự động xem xét các hướng dẫn mã byte

dis. opname

Chuỗi tên hoạt động, có thể lập chỉ mục bằng cách sử dụng mã byte

dis. opmap

Tên hoạt động ánh xạ từ điển thành mã byte

dis. cmp_op

Trình tự của tất cả các tên hoạt động so sánh

dis. hasconst

Chuỗi mã byte truy cập một biến miễn phí [lưu ý rằng 'miễn phí' trong ngữ cảnh này đề cập đến tên trong phạm vi hiện tại được tham chiếu bởi phạm vi bên trong hoặc tên trong phạm vi bên ngoài được tham chiếu từ phạm vi này. Nó không bao gồm các tham chiếu đến phạm vi toàn cầu hoặc dựng sẵn]

Chủ Đề