2018-10-26 关于Python包和模块的10个知识清单

引自:https://www.itcodemonkey.com/article/9771.html

0、一个模块(module)就是一个py文件,模块的名字就是该文件的名字(不包含后缀)。

1、一个包(package)就是一个文件夹,包名就是文件夹名。

2、按import进来的对象不同分为4种场景:

2018-10-26 关于Python包和模块的10个知识清单_第1张图片

3、解释器会按照 sys.path列表的顺序来查找被引用的包或模块名字。

2018-10-26 关于Python包和模块的10个知识清单_第2张图片

优先加载当前工作目录下的模块,如果你的项目中使用了和内建模块中同名的包或模块名,就会遇到没有xx属性之类的报错提示。新手特别喜欢干这事。

4、你可以操作sys.path,使得其他路径的文件加入到Path中,使之能被解释器发现。


2018-10-26 关于Python包和模块的10个知识清单_第3张图片

5、另一种加载模块的方法:如果你的模块不在sys.path下面,除了第4条建议外,还可以使用imp模块中的imp.load_source

import imp

imp.load_source("h1", "c://data/hi.py")

import hi

# 可以自己指定模块的名字,相当于 import hi as h2

imp.load_source("h2", "c://data/hi.py")

import h2


6、 import module 时, 模块中的所有代码将被执行(类对象, 函数对象将被创建,不会被调用), import package时, __init__.py文件中的代码也将被执行。

7、模块 __file__属性

导入模块时, 可以通过模块__file__属性查看模块所在磁盘的路径位置


2018-10-26 关于Python包和模块的10个知识清单_第4张图片

8、永远不要用from import *, 有不可预知的风险。

你可能感兴趣的:(2018-10-26 关于Python包和模块的10个知识清单)