Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ฉันจะยกเลิกการโหลด (โหลดซ้ำ) โมดูล Python ได้อย่างไร


ฟังก์ชัน reload(moduleName) จะรีโหลดโมดูลที่โหลดไว้ก่อนหน้านี้ (สมมติว่าคุณโหลดมันด้วยไวยากรณ์ "importmoduleName" โดยไม่ต้องออกจากสคริปต์ ซึ่งมีจุดประสงค์เพื่อใช้ในการสนทนา โดยที่คุณได้แก้ไข ไฟล์ต้นฉบับสำหรับโมดูลและต้องการทดสอบโดยไม่ต้องออกจาก Python แล้วเริ่มใหม่อีกครั้ง ตัวอย่างเช่น

>>> import mymodule
>>> # Edited mymoduleand want to reload it in this script
>>> reload(mymodule)

โปรดทราบว่า moduleName เป็นชื่อจริงของโมดูล ไม่ใช่สตริงที่มีชื่อ เอกสาร python ระบุถึงฟังก์ชันการโหลดซ้ำ:

โค้ดของโมดูล Python ถูกคอมไพล์ใหม่และโค้ดระดับโมดูลถูกเรียกใช้งานอีกครั้ง โดยกำหนดชุดของอ็อบเจ็กต์ใหม่ซึ่งผูกกับชื่อในพจนานุกรมของโมดูล ฟังก์ชัน init ของโมดูลส่วนขยายจะไม่ถูกเรียกเป็นครั้งที่สอง ชื่อในเนมสเปซโมดูลได้รับการอัปเดตเพื่อชี้ไปที่อ็อบเจ็กต์ใหม่หรือที่เปลี่ยนแปลง การอ้างอิงอื่นๆ ไปยังอ็อบเจ็กต์เก่า (เช่น ชื่อภายนอกโมดูล) จะไม่เด้งกลับเพื่ออ้างถึงอ็อบเจ็กต์ใหม่และต้องได้รับการอัปเดตในแต่ละเนมสเปซที่เกิดขึ้นหากต้องการ