博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python装载模块的顺序
阅读量:5931 次
发布时间:2019-06-19

本文共 620 字,大约阅读时间需要 2 分钟。

  hot3.png

昨天恰巧在工作学习的时候遇到了类似的问题,去查了一些资料,感觉虫师写的最为精妙,特转发过来,供大家学习。

Python 在执行import 语句时,到底进行了什么操作,按照Python的文档,它执行了如下操作:
第1 步,创建一个新的,空的module 对象(它可能包含多个module);
第2 步,把这个module 对象插入sys.module 中
第3 步,装载module 的代码(如果需要,首先必须编译)
第4 步,执行新的module 中对应的代码。
在执行第3 步时,首先要找到module 程序所在的位置,搜索的顺序是:
当前路径(以及从当前目录指定的sys.path),然后是PythonPATH,然后是Python 的安装设置相
关的默认路径。正因为存在这样的顺序,如果当前路径或PythonPATH 中存在与标准module 同样的
module,则会覆盖标准module。也就是说,如果当前目录下存在xml.py,那么执行import xml 时,导
入的是当前目录下的module,而不是系统标准的xml。
了解了这些,我们就可以先构建一个package,以普通module 的方式导入,就可以直接访问此package
中的各个module 了。Python 中的package 必须包含一个__init__.py 的文件

转载于:https://my.oschina.net/hding/blog/689571

你可能感兴趣的文章
Lazy FP状态还原漏洞公布,大多数Intel的酷睿CPU受其影响
查看>>
无服务器TOP3大关键问题及解决方案
查看>>
投简历申请数据科学岗石沉大海?这些秘密别人不会告诉你
查看>>
BitBucket引入灾难恢复和合并策略
查看>>
Node.js 2017企业用户调查结果发布
查看>>
InfoQ中文站2015年度优秀社区编辑评选揭晓
查看>>
GitHub贡献第一的公司是谁?微软开源软件列表
查看>>
中国在两年内赶超美国AI?李开复:不一定
查看>>
埃森哲、亚马逊和万事达卡抱团推出的区块链项目有何神通?
查看>>
Node 7.6默认支持Async/Await
查看>>
.NET Core如何为项目提供高性能解决方案?
查看>>
你以为AlphaGo只是下围棋厉害?不,它还能用来优化金融交易策略参数
查看>>
HashMap源码分析
查看>>
compass watch 报CompatibilityError 解决方案
查看>>
Payara基金会发布全面支持MicroProfile 2.0的5.183版Payara Server和Payara Micro
查看>>
函数式编程语言时代已经来临
查看>>
Yarn将用TypeScript重写,Flow惨遭亲爹抛弃!
查看>>
Visual Studio 2017 15.7预览版发布
查看>>
Python数据科学平台Anaconda的最新发布中增加了Microsoft VS Code
查看>>
利用媒体云实现差异化
查看>>