โหมดโต้ตอบของ Python ทำงานบนหลักการของ REPL (อ่าน - ประเมิน - พิมพ์ - วนซ้ำ) โมดูลโค้ดในไลบรารีมาตรฐานของ Python มีฟังก์ชันอำนวยความสะดวกของคลาสและฟังก์ชันการตั้งค่าสภาพแวดล้อม REPL จากภายในสคริปต์ Python
สองคลาสต่อไปนี้ถูกกำหนดในโมดูลโค้ด:
InteractiveInterpreter: คลาสนี้เกี่ยวข้องกับสถานะการแยกวิเคราะห์และล่าม (เนมสเปซของผู้ใช้)
อินเทอร์แอกทีฟคอนโซล: เลียนแบบพฤติกรรมของล่าม Python แบบโต้ตอบอย่างใกล้ชิด
ฟังก์ชันอำนวยความสะดวกสองอย่างในโมดูล ได้แก่:
โต้ตอบ(): ฟังก์ชันอำนวยความสะดวกในการรันลูป read-eval-print
compile_command(): ฟังก์ชันนี้มีประโยชน์สำหรับโปรแกรมที่ต้องการเลียนแบบลูปหลักของล่ามของ Python (REPL)
วิธีการล่ามเชิงโต้ตอบ
รันซอร์ส(): รวบรวมและเรียกใช้ซอร์สบางอย่างในล่าม
runcode(): รันโค้ดวัตถุ
วิธีการคอนโซลแบบโต้ตอบ:
เนื่องจากคลาส InteractiveConsole เป็นคลาสย่อยของ InteractiveInterpreter วิธีการข้างต้นจึงพร้อมใช้งานโดยอัตโนมัติ นอกจากนี้ยังมีการกำหนดวิธีการดังต่อไปนี้
โต้ตอบ(): จำลองคอนโซล Python แบบโต้ตอบอย่างใกล้ชิด
ดัน(): ดันบรรทัดของข้อความต้นฉบับไปที่ล่าม
รีเซ็ตบัฟเฟอร์(): ลบข้อความต้นฉบับที่ไม่ได้รับการจัดการออกจากบัฟเฟอร์อินพุต
raw_input(prompt="")
เขียนข้อความแจ้งและอ่านบรรทัดโดยค่าเริ่มต้นจาก sys.stdin
ตัวอย่าง
import code x = 10 y = 20 def add(x,y): return x+y print (add(x,y)) code.interact(local=locals()) print (x,y) print (add(x,y))
ในโค้ดข้างต้น สอง vaiables ถูกกำหนดและส่งผ่านไปยังฟังก์ชัน เราเรียกใช้คอนโซลแบบโต้ตอบ อาร์กิวเมนต์ local=locals() อนุญาตให้ใช้เนมสเปซท้องถิ่นเป็นค่าเริ่มต้นภายในลูปล่าม
หากคุณกำหนดค่าต่างๆ ให้กับตัวแปรและออกจากคอนโซลโดยการกด ctrl+D ค่าเหล่านั้นจะถูกส่งต่อไปยังฟังก์ชัน
ผลลัพธ์
addition= 30 Python 3.6.6 |Anaconda custom (64-bit)| (default, Oct 9 2018, 12:34:16) [GCC 7.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> x=100 >>> y=200 >>> now exiting InteractiveConsole... 100 200 addition = 300