首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

有同学问题关于模块与包的问题,特给新人总结的关于Python包与模块的10个知识清单。

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

1、一个 包(package)就是一个文件夹,(Python2规定该文件夹必须包含一个?__init__.py,Python3没有要求),包名就是文件夹名。

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

代码语言:javascript
复制
1.?import?<package>??#?导入一个包?2.?import?<module>???#?导入一个模块?3.?from?<package>?import?<module?or?subpackage?or?object>??#?从一个包中导入模块/子包/对象?4.?from?<module>?import?<object>??#?从模块中导入对象?

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

代码语言:javascript
复制
>>>?import?sys?>>>?import?pprint?>>>?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中,使之能被解释器发现。

代码语言:javascript
复制
#?test.py?import?sys,?os??#?当前目录没有hi模块,报错找不到模块?import?hi??Traceback?(most?recent?call?last):?ImportError:?No?module?named?hi??#?hi模块所在位置:?/data/hi.py?#?将hi所在模块加入sys.path?sys.path.append("/data")??#?可以正常工作了?import?hi?

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

代码语言:javascript
复制
import?imp??imp.load_source("hi",?"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__?属性查看模块所在磁盘的路径位置

代码语言:javascript
复制
>>>?import?requests?>>>?requests.__file__?'D:\\Programs\\Anaconda3\\envs\\py_test\\lib\\site-packages\\requests\\__init__.py'?

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

9、没有了。

  • 发表于:
  • 原文链接http://news.51cto.com/art/201809/584283.htm
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券
http://www.vxiaotou.com