在Python中非常具体地导入是否总是一个好主意?

时间:2012-01-22 02:35:45

标签: python django

这几乎是Python,但是从Django用户那里询问。

假设这是Django应用程序的布局:

  

Web客户端

     
      
  • 应用   
        
    • MyApp的#1   
          
      • 库   
            
        • library.py
        •   
      •   
    •   
    • MyApp的#2   
          
      • views.py
      •   
    •   
    • MyApp的#3
    •   
  •   

如果我正在使用views.py,并且我想导入library.py,哪一个看起来更好?

from webclient.apps.myapp.library import LibraryClass
from webclient.apps.myapp.library.library import LibraryClass

我正在使用PyCharm,无论哪种方式都不会抱怨“未解析的引用”。 是否更好地导入非常特殊。第二种导入方法是否更有可能避免名称冲突,如果可能的话(比如/ library /有几个.py文件)?

感谢。

2 个答案:

答案 0 :(得分:4)

您应该始终从定义它们的位置导入名称。这样,如果webclient.apps.myapp.library一天停止导入LibraryClass,则不会破坏其他导入。

答案 1 :(得分:3)

作为Ignacio的回答的后续内容,您应该查看您正在使用的库的文档,以查看它建议您导入内容的位置。可能虽然LibraryClass中定义了webclient.apps.myapp.library.library,但它被记录为webclient.apps.myapp.library,因此在某些时候,定义可能会移到那里,或webclient.apps.myapp.library.oldversion ,但仍可从webclient.apps.myapp.library访问。