The import system of python

python的import系统

import 模块
导入了一个模块,相当于岛屿了一个文件夹,是一个相对路径。
使用时需要 模块.函数
from x import y
导入了一个模块中的一个函数,又或者相当于一个文件夹中的一个文件。使用时直接使用import后面的函数名就可以。
from x import y
导入一个模块中所有的函数
from . import y
从当前文件夹中导入y
Ps. 较为复杂,目前暂不深入。

简单摘录
假设该from . import x语句存在于proj/test.py中,它会导入同级目录下的__init__.pyproj/__init__.py中的x对象,如果没有proj/__init__.py或有那个文件但是文件中不存在x对象,就导入proj/x/__init__.py,如果还没有,就导入proj/x.py,还没有就报错。其中同级是按__name__的前一部分或 __package__ 确定的。如果用python proj/test.py运行,name__就是__mainpackage__是None,就会报错。如果用python -m proj.test运行,虽然__name__还是__main,但是__package__是proj,就能成功导入,即使proj/init.py不存在也行。

from ... import y
从上一级文件夹导入y
from ...x import y
从上一级文件夹中的x文件夹里的__init__.py程序里导入y

import x as b
将x命名为b导入
from x import y as b
导入x中的y并命名为b