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ớp | Mô tả |
|---|---|
InteractiveInterpreter | Xử lý parsing và trạng thái interpreter (namespace của người dùng) |
InteractiveConsole | Kế 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.