Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Interpreter base classes trong Python

Module code trong thư viện chuẩn Python cung cấp các lớp cơ sở để xây dựng môi trường REPL (Read-Eval-Print-Loop) tùy chỉnh.

Hai lớp chính

LớpMô tả
InteractiveInterpreterXử lý parsing và trạng thái interpreter (namespace của người dùng)
InteractiveConsoleKế thừa InteractiveInterpreter, mô phỏng hành vi console Python tương tác

Hai hàm tiện ích

  • code.interact(): Chạy vòng lặp REPL.
  • code.compile_command(): Biên dịch lệnh nhập vào, hữu ích cho chương trình mô phỏng vòng lặp chính của interpreter.

Phương thức của InteractiveInterpreter

  • runsource(source, filename="<input>", symbol="single"): Biên dịch và chạy mã nguồn trong interpreter.
  • runcode(code): Thực thi code object đã biên dịch.

Phương thức của InteractiveConsole (kế thừa từ InteractiveInterpreter)

  • interact(banner=None, exitmsg=None): Mô phỏng console Python tương tác.
  • push(line): Đẩy một dòng source vào interpreter.
  • resetbuffer(): Xóa source chưa xử lý khỏi buffer.
  • raw_input(prompt=""): Viết prompt và đọc dòng (mặc định từ sys.stdin).

Ví dụ: Tùy biến Interactive Console

import code

x = 10
y = 20

def add(x, y):
    return x + y

print("addition =", add(x, y))

# Khởi động console tương tác với namespace cục bộ
code.interact(local=locals())

print("x, y =", x, y)
print("addition =", add(x, y))

Kết quả chạy (mô phỏng)

addition = 30
Python 3.6.6 |Anaconda custom (64-bit)| ...
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> x = 100
>>> y = 200
>>> 
now exiting InteractiveConsole...
100 200
addition = 300

Giải thích: Biến x, y được truyền vào console qua local=locals(). Người dùng thay đổi giá trị trong console, và khi thoát (Ctrl+D / Ctrl+Z), giá trị mới được phản ánh ra biến gốc.

Ứng dụng thực tế

  • Debugging: Nhúng console vào chương trình đang chạy để kiểm tra trạng thái.
  • Scripting: Cho phép người dùng tương tác với object của ứng dụng.
  • Teaching: Môi trường học tập tùy chỉnh.