模块

import如何工作

导入其实是运算时的运算,程序第一次导入指定文件时,会执行三个步骤。

1、搜索:找到模块文件

2、编译:编译成位码(需要时)

3、执行模块的代码来创建其所定义的对象。

从技术上讲,Python把载入的模块存到一个名为sys.modules的表中,并在一次导入操作的开始检查该表。如果模块不存在,将会启动三个步骤的过程。

1、搜索

路径和后缀是可以省略掉的,因为Python使用了标准模块搜索路径来找出import语句所对应的模块文件。

2、编译(可选)

Python会检查文件的时间戳,如果发现字节码文件比源代码文件旧,就会在程序运行时自动重新生成字节代码。另一方面,如果发现.pyc字节码文件不必对应的.py文件旧,就会跳过源代码到字节码的编译步骤。此外如果程序只发现了字节码文件,而没有源代码,就会直接加载字节码(这意味着你可以把一个程序只作为字节码文件发布,而避免发布源代码)。换句话说,如果有可能使程序的启动提速,就会跳过编译步骤。

注意:当文件被导入时,就会进行编译。因此,通常看不到顶层文件的.pyc字节码文件,除非这个文件也被其它文件导入:只有被导入的文件才会在机器上留下.pyc。顶层文件的字节码文件是在内部使用后就被丢弃了。

3、运行

pass

模块搜索路径

1.程序的主目录

2.PYTHONPATH目录(如果已经进行了设置)

3.标准链接库目录

4.任何.pth文件的内容(如果存在的话)

最后,这四个组件组合起来就变成了sys.path。搜索路径的第一和第三元素时自动定义的,第二和第四元素,就可以用来扩展路径,从而包含你自己的源代码目录。

主目录

顶层文件所在的目录,程序首先搜索这个目录。由于这个目录是先被搜索的,所以其文件也将覆盖路径上其他目录中具有相同名称的模块。

PATHONHPATH

之后,Pthon会从左至右搜索PYTHONPATH环境变量设置中罗列出来的所有目录。你可以把想导入的目录都加进来。

标准库目录

接着,Python会自动搜索标准库模块安装在机器上的那些目录。

.pth

是PYTHONPATH的一种替代方案,允许用户把有效的目录添加到模块搜索路径中去,也就是在后缀名为.pth的文件中一行一行的列出目录。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值