PEP 8พูดว่า:
- การนำเข้าจะถูกวางไว้ที่ด้านบนสุดของไฟล์เสมอหลังจากความคิดเห็นของโมดูลและ docstrings ใด ๆ และก่อนโมดูลและค่าคงที่ของโมดูล
ในเหตุการณ์ที่เกิดขึ้นฉันละเมิด PEP 8 บางครั้งฉันนำเข้าสิ่งที่อยู่ในฟังก์ชัน ตามกฎทั่วไปฉันจะทำเช่นนี้หากมีการนำเข้าที่ใช้ภายในฟังก์ชันเดียวเท่านั้น
มีความคิดเห็นอย่างไร
แก้ไข (เหตุผลที่ฉันรู้สึกว่าการนำเข้าในฟังก์ชันอาจเป็นความคิดที่ดี):
เหตุผลหลัก: สามารถทำให้โค้ดชัดเจนขึ้น
- เมื่อดูโค้ดของฟังก์ชันฉันอาจถามตัวเองว่า "function / class xxx คืออะไร" (xxx ถูกใช้ภายในฟังก์ชัน) หากฉันมีการนำเข้าทั้งหมดที่ด้านบนของโมดูลฉันต้องไปดูที่นั่นเพื่อดูว่า xxx คืออะไร
from m import xxx
นี้มีมากขึ้นของปัญหาเมื่อใช้ เห็นm.xxx
ในฟังก์ชั่นคงบอกอะไรได้มากกว่านี้ ขึ้นอยู่กับว่าm
คืออะไร: เป็นโมดูล / แพ็คเกจระดับบนสุด (import m
) ที่รู้จักกันดีหรือไม่? หรือเป็นโมดูลย่อย / แพ็กเกจ (from a.b.c import m
)? - ในบางกรณีการมีข้อมูลเพิ่มเติมนั้น ("xxx คืออะไร") ใกล้กับตำแหน่งที่ใช้ xxx อาจทำให้เข้าใจฟังก์ชันได้ง่ายขึ้น