总结有下面四种from import 的使用情况:
# case1
from package import module1
module1.func() # 这种情况只有module1被import, 如果要访问module1的函数, 必须加上module1. 因为当前namespace 只有module1
# case2
from package.module1 import *
func() # module1的整个命名空间都被导入,如果要访问module1的某函数, 可以直接访问,因为当前名称空间包含module的所有内容。 BTW,这种使用方式很危险
#case3
from package1 import module1 # 当前名称空间会包含module1
from package2 import module1 # 当前名称空间会overwrite package1 的 module1
# 解决方法, from package2 import module1 as newmodule1
case4:
import parentpackage.package1.module1
'''
这种情况你如果查看当前namespace, 会是这样的
['__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_pydev_stop_at_break', 'parentpackage']
所以如果你要访问module1 的函数, 必须使用全路径。like parentpackage.package1.module1.func()
'''