2018-10-26 关于Python包和模块的10个知识清单
2018-10-29 本文已影响0人
dongdonghao
引自:https://www.itcodemonkey.com/article/9771.html
0、一个模块(module)就是一个py文件,模块的名字就是该文件的名字(不包含后缀)。
1、一个包(package)就是一个文件夹,包名就是文件夹名。
2、按import进来的对象不同分为4种场景:
3、解释器会按照 sys.path列表的顺序来查找被引用的包或模块名字。
优先加载当前工作目录下的模块,如果你的项目中使用了和内建模块中同名的包或模块名,就会遇到没有xx属性之类的报错提示。新手特别喜欢干这事。
4、你可以操作sys.path,使得其他路径的文件加入到Path中,使之能被解释器发现。
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__属性查看模块所在磁盘的路径位置
8、永远不要用from <module> import *, 有不可预知的风险。