sys.path 和sys.modules sys.path包含了module的查找路径;
sys.modules包含了当前所load的所有的modules的dict(其中包含了builtin的modules);
比如“/usr/lib/python3.4/site-packages”,如果我写了 一个 exp.py 文件放在这个文件下,那么我在自己的系统写的 python3 文件都可以采用 import exp 导入。
还可以看到还有一个是“”,及当前文件夹,假如 存在如此的 一个 文件 结构:
parent/
one/<br>
__init__.py
exp.py
exp2.py
exp3.py
exp.py和exp2.py都在one目录下,那么在exp2.py中可以通过 import exp 导入exp.py
而exp3.py和one都处在parent目录下,那么在exp3.py中可以通过 import one.exp 导入exp.py
3.init.py的作用
偶尔可以看到有些人写的包下面还会有一个init.py,它的作用是在导入包时首先执行的。
假设在 exp3.py 中写入 import one.exp ,那么会首先执行 init.py 文件,接着会执行exp.py文件
如果不需要,init.py可以为空,也可以干脆不加入init.py
4.if name == “main”
也有时候会看到 .if name == “main” 语句,它的作用就是当此文件没有被作为导入的文件使用时执行 if 语句块里的程序。
假如 exp.py 中加入了 if name == “main” ,然后 python3 exp.py,就会执行这个语句块里的内容
而 如果 if name == “exp”,时则是被 其他文件 以 “import exp”导入时执行的部分
有如果是 if name == “one.exp”,时则是被 其他文件 以 “import one.exp”导入时执行的部分
注意 在 “import exp”时是不会执行 if name == “one.exp”中的内容的!同样: “import one.exp“是不会执行 if name == “exp”中的内容的