Python 3.7 ast

def visit_If(self, node. ast. Nếu) -> ast. AST. """Nếu báo cáo e. g. Nếu ``x == y`` được chuyển đổi thành ``if True`` và ``if False``. Phương thức truy cập này chỉ hoạt động khi sử dụng Mixin thích hợp. """ bản thân. generic_visit(node) log_header = f"visit_If. {bản thân. src_file}. " # mặc định cho phép so sánh là "If_Statement" sẽ được thay đổi thành True/False # If_Statement không được đặt làm mục tiêu đột biến, được kiểm soát trong hàm get_mutations if_type = "If_Statement" # Py 3. 7 so với 3. 8 - 3. 7 sử dụng NameConstant, 3. 8 sử dụng Hằng if_mutations = { "If_True". bản thân. hằng_type(giá trị=True), "If_False". bản thân. hằng_type (giá trị = Sai), } nếu loại (nút. kiểm tra) == tự. hằng_type. if_type. str = f"If_{bool(nút. kiểm tra. giá trị)}" # loại. bỏ qua node_span = NodeSpan(node) idx = LocIndex( ast_class="If", lineno=node_span. dòng, col_offset=node_span. col_offset, op_type=if_type, end_lineno=node_span. end_lineno, end_col_offset=node_span. end_col_offset, ) tự. lộc. thêm (idx) nếu idx == tự. target_idx và bản thân. đột biến và không tự. chỉ đọc. TIỀU PHU. debug("%s thay doi idx. %s với %s", log_header, tự. target_idx, bản thân. đột biến) trả về ast. fix_missing_locations( ast. copy_location( ast. Nếu(test=if_mutations[self. đột biến], cơ thể = nút. cơ thể, orelse=nút. orelse), nút, ) ) LOGGER. gỡ lỗi("%s (%s, %s). không áp dụng đột biến. ", log_header, nút. dây, nút. col_offset) nút trả về

Gói PyPI typed-ast nhận được tổng cộng 2.170.882 lượt tải xuống mỗi tuần. Do đó, chúng tôi đã chấm điểm mức độ phổ biến được đánh máy là Dự án có ảnh hưởng

Dựa trên số liệu thống kê dự án từ kho lưu trữ GitHub cho gói PyPI typed-ast, chúng tôi thấy rằng gói này đã được gắn dấu sao 217 lần

Đây là phiên bản đã được phân tích của unparse được tìm thấy trong bản phân phối nguồn Python;

Ví dụ cơ bản

import inspect
import ast
import astunparse

# get back the source code
astunparse.unparse(ast.parse(inspect.getsource(ast)))

# get a pretty-printed dump of the AST
astunparse.dump(ast.parse(inspect.getsource(ast)))

Thư viện này tương thích với nguồn đơn với Python 2. 6 đến Python 3. 5. Nó được tác giả bởi các nhà phát triển lõi Python; . 7 và Python 3. 5 bộ nguồn và bộ thử nghiệm, đồng thời thêm trình bao bọc. Bao thanh toán này là để cung cấp triển khai thư viện hỗ trợ cả hai phiên bản

Thêm vào đây là một chức năng tiện ích kết xuất bản in đẹp

Bộ thử nghiệm vừa chạy các thử nghiệm cụ thể vừa chạy vòng quanh phần lớn thư viện chuẩn

Tiện ích mở rộng và lựa chọn thay thế

Các dự án tương tự bao gồm

Không cái nào trong số này làm tròn phần lớn thư viện chuẩn và không đạt một số bài kiểm tra cơ bản trong bộ kiểm tra test_unparse

Thư viện này sử dụng mã duy trì cốt lõi và trưởng thành thay vì cố gắng vá các thư viện hiện có. Các mô-đun unparse và test_unparse thuộc giấy phép PSF

tiện ích mở rộng bao gồm

  • gõ-astunparse. mở rộng astunparse để hỗ trợ các chú thích loại

Đặc trưng

  • giải mã Python AST

  • bản in đẹp AST

Nhật ký thay đổi

Đây là những thay đổi gần đây đối với AST Unparser

1. 6. 3 - 2019-12-22

  • Thêm hỗ trợ đầy đủ cho Python 3. 8

1. 6. 2 - 2019-01-19

  • Thêm hỗ trợ cho nút Hằng trong Python 3. 8

  • Thêm bài kiểm tra vào sdist

1. 6. 1 - 2018-10-03

  • Sửa lỗi quay vòng của các chuỗi f rất phức tạp

1. 6. 0 - 2018-09-30

1. 5. 0 - 2017-02-05

  • Trăn 3. 6 khả năng tương thích

  • vá lỗi. loại tùy chọn argparser chính xác

1. 4. 0 - 2016-06-24

  • Hỗ trợ từ khóa async

  • Hỗ trợ bỏ phân tích cú pháp các nút “Tương tác” và “Biểu thức”

1. 3. 0 - 2016-01-17

1. 2. 0 - 2014-04-03

  • Trăn 2. 6 đến 3. 4 khả năng tương thích

  • Một kết xuất chức năng mới được thêm vào để trả về một phiên bản in đẹp của AST. Nó cũng có sẵn khi chạy python -m astunparse làm đối số --dump

1. 1. 0 - 2014-04-01

  • unparse sẽ trả lại mã nguồn cho AST. Nó khá đầy đủ tính năng và đi vòng quanh stdlib và tương thích với Python 2. 7 và Trăn 3. 4

    Chạy python -m astunparse sẽ in nguồn được cắt vòng cho bất kỳ tệp python nào được đưa ra làm đối số

    typed_ast là gói Python 3 cung cấp Python 2. 7 và Python 3 tương tự như thư viện ast tiêu chuẩn. Không giống như ast bên dưới Python 3. 8, các trình phân tích cú pháp trong typed_ast bao gồm các nhận xét loại PEP 484 và độc lập với phiên bản Python mà chúng được chạy theo đó. Trình phân tích cú pháp typed_ast tạo ra Python AST tiêu chuẩn (cộng với nhận xét loại) vừa nhanh vừa chính xác, vì chúng dựa trên CPython 2. 7 và 3. 7 trình phân tích cú pháp

    Ghi chú. Mô-đun ast của Python 3. 8+ hỗ trợ tất cả các tính năng của typed_ast. typed_ast không hỗ trợ mã phân tích sử dụng cú pháp được giới thiệu trong Python 3. 8 trở đi. Chúng tôi khuyên bạn nên sử dụng ast trên Python 3. 8 trở lên

    ast trong Python là gì?

    Mã nguồn. Lib/ast. py. Mô-đun ast giúp các ứng dụng Python xử lý cây ngữ pháp cú pháp trừu tượng của Python. Bản thân cú pháp trừu tượng có thể thay đổi với mỗi bản phát hành Python;

    Làm thế nào để sử dụng ast?

    Cách sử dụng thư viện ast, a = b + 3 hoặc a = 3+b , cả hai đều có cùng loại nút i. e. BinOp, bạn có thể xác thực giá trị “a” của biến và loại nút của nó. Đối với mỗi dòng mã, tạo nút AST sau đó so sánh giá trị, loại nút và các tham số khác cũng như toán tử, toán hạng, tên hàm, tên lớp, chỉ mục, v.v.… if required.

    Ast có phải là cây nhị phân không?

    Cây nhị phân có nhiều công dụng. Trên thực tế, các trình biên dịch thường sử dụng chúng để xây dựng cái được gọi là cây cú pháp trừu tượng (hoặc AST) — một biểu diễn trung gian của mã chưa được biên dịch đầy đủ. Trình phân tích cú pháp JavaScript cũng sử dụng AST, mặc dù đó là cây tổng quát, không phải cây nhị phân .

    ast trong mã hóa là gì?

    Cây cú pháp trừu tượng, hay AST, là biểu diễn cây mã nguồn của chương trình máy tính truyền đạt cấu trúc của mã nguồn. Each node in the tree represents a construct occurring in the source code.