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

จะนำเข้าทุกอย่างจากเนมสเปซ / แพ็คเกจหลามได้อย่างไร


เป็นความคิดที่ดีที่จะนำเข้าทุกอย่างจากแพ็คเกจ Python เนื่องจากแพ็คเกจไม่ใช่ super-module แต่เป็นคอลเลกชันของโมดูลที่จัดกลุ่มเข้าด้วยกัน ดังนั้นคุณควรนำเข้าสิ่งที่คุณต้องการในไฟล์นั้น นอกจากนี้ การนำเข้าทุกอย่างจากแพ็กเกจไปยังเนมสเปซส่วนกลางของคุณจะทำให้ชื่อมีจำนวนมากขึ้น และมีความเป็นไปได้สูงที่จะขัดแย้งกันระหว่างชื่อเหล่านั้น

ที่ถูกกล่าวว่ายังคงมีวิธีการในการทำเช่นนี้ อย่างแรกคือการนำเข้าทุกอย่างจากแพ็คเกจด้วยตนเองโดยใช้คำสั่งนำเข้าสำหรับทุกโมดูลย่อย อีกวิธีหนึ่ง ตามที่เอกสารประกอบที่ https://docs.python.org/tutorial/modules.html#importing-from-a-package - แนะนำคือถ้าคุณมีรายการสตริงชื่อ __all__ ในไฟล์ __init__.py ของคุณ ชื่อโมดูล/แพ็คเกจย่อยทั้งหมดในรายการนั้นจะถูกนำเข้าเมื่อมีการนำเข้าจากแพ็ค * ดังนั้น คุณจะต้องสร้างรายการสตริงของทุกสิ่งในแพ็คเกจของคุณ จากนั้นจึงทำ "จากการนำเข้าชื่อแพ็กเกจ *" เพื่อนำเข้าทุกอย่างในโมดูลนี้ ดังนั้นเมื่อคุณนำเข้าสิ่งนี้จากที่อื่น สิ่งเหล่านี้ทั้งหมดจะถูกนำเข้าภายในเนมสเปซนี้ด้วย