อะไร ในคำสั่งการนำเข้าใน Python หมายความว่าอย่างไร


141

ฉันกำลังมองหารหัสสำหรับmultiprocessingโมดูลPython และมันมีบรรทัดนี้:

from ._multiprocessing import win32, Connection, PipeConnection

แทน

from _multiprocessing import win32, Connection, PipeConnection

_multiprocessingความแตกต่างที่ลึกซึ้งเป็นช่วงเวลาก่อนที่จะ นั่นหมายความว่าอย่างไร? ทำไมระยะเวลา


3
มันเรียกว่าการนำเข้าแบบญาติ: docs.python.org/tutorial/modules.html
Aillyn

หากไม่มี.ไฟล์ที่_multiprocessing.pyมีสาเหตุที่ไม่สามารถเข้ารหัสได้ถัดจากสคริปต์หลักของคุณmultiprocessingจะทำให้ไฟล์เสียหาย ด้วย., มันทำให้แน่ใจว่ามันได้รับโมดูลของตัวเอง
Chris Morgan

ถ้า a .อ้างถึงโมดูลเพื่อนทำไมเอกสารบอกว่าจะใช้.เมื่อโมดูลหลายตัวประมวลผลนั้นควรเป็นส่วนหนึ่งของไลบรารี sys.path ปกติ? คำถามและคำอธิบายของคริสผสมกันหรือไม่ฉันไม่เข้าใจ? ขอบคุณสำหรับความช่วยเหลือ
rfii

คำตอบ:


120

นั่นคือรูปแบบใหม่สำหรับชัดเจนการนำเข้าญาติ มันหมายถึงการนำเข้าจากแพ็คเกจปัจจุบัน


26
สิ่งที่กำหนด "แพคเกจปัจจุบัน" คืออะไร?
fraxture

7
มันควรจะพูดว่าแพคเกจที่นำเข้านั้นอยู่ที่ไหน โดยทั่วไปหมายถึงเนมสเปซปัจจุบันหรือไดเรกทอรีแพ็คเกจ
Keith

2
ขอบคุณฉันคิดว่าฉันรู้ว่าคุณหมายถึงอะไร เพื่อที่จะชัดเจนคุณจะลองยกตัวอย่างหรือไม่?
fraxture

11
คุณสามารถทำสิ่งต่าง ๆ เช่น:from . import peermodule from .. import parentpackagemodule
Keith

2
@bmc วิธีที่ดีในการเรียนรู้คือการตั้งค่าการทดลองเล็กน้อยและลองด้วยตัวคุณเอง ;-)
Keith

22

จุดในชื่อโมดูลใช้สำหรับการนำเข้าโมดูลสัมพันธ์ (ดูที่นี่และที่นี่ส่วน 6.4.2)

คุณสามารถใช้มากกว่าหนึ่งจุดโดยไม่อ้างอิงถึงแพ็คเกจ curent แต่เป็นพาเรนต์ สิ่งนี้ควรใช้ภายในแพ็คเกจเท่านั้นในโมดูลหลักเราควรใช้ชื่อโมดูลแน่นอน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.