有同学对模块和包有疑问,这里为新人总结了10个Python包和模块的知识清单。0.一个模块(module)就是一个py文件,模块的名字就是文件的名字(不包括后缀)。1、一个包(package)就是一个文件夹(Python2规定文件夹必须包含一个__init__.py,Python3没有要求),包名就是文件夹名。2、根据导入的对象分为4种场景:1.import#导入一个包2.import#导入一个模块3.fromimport#从包中导入模块/子包/object4.fromimport#Importanobjectfromamodule3.解释器将按照sys.path列表的顺序搜索导入的包或模块名称。>>>importsys>>>importpprint>>>pprint.pprint(sys.path)['','C:\\Python\\Python35-32\\python35.zip','C:\\Python\\Python35-32\\DLLs','C:\\Python\\Python35-32\\lib','C:\\Python\\Python35-32','C:\\Python\\Python35-32\\lib\\site-packages']优先加载当前工作目录中的模块。如果在项目中使用与内置模块同名的包或模块名称,会遇到没有xx属性的错误信息,尤其是初学者。喜欢做这种事。4、可以操作sys.path,将其他路径文件添加到Path中,以便解释器可以发现它们。#test.pyimportsys,os#当前目录下没有hi模块,找不到模块hi位于sys.pathsys.path。append("/data")#可以正常工作importhi5,另一种加载模块的方法:如果你的模块不在sys.path中,除了第五种方法,你还可以使用imp模块中的方法imp.load_sourceimportimmpimp。load_source("hi","C://data/hi.py")importhi#可以自己指定模块名,相当于importhiash2imp.load_source("h2","C://data/hi.py")importh26、导入模块时,会执行模块中的所有代码(会创建类对象和函数对象,但不会调用),导入包时,也会执行init.py文件中的代码。7、模块的__file__属性导入模块时,可以通过模块的__file__属性查看模块所在磁盘的路径位置>>>importrequests>>>requests.__file__'D:\\Programs\\Anaconda3\\envs\\py_test\\lib\\site-packages\\requests\\__init__.py'8.千万不要用fromimport*,有不可预知的风险9.没有了。
Python包和模块的10个知识清单相关文章