[TOC]
python day15
模块的四种形式
- 自定义模块:自己写的一系列函数,就称之为自定义模块
- 第三方模块:已被编译为共享库或DLL的C或C++扩展
- 内置模块:使用C编写并链接到python解释器的内置模块
- 包:把一系列模块组织到一起的文件夹(注:文件夹下有一个
__init__.py
文件,改文件称之为包)
模块的导入
import 模块名
import首次导入模块发生了3件事:
1. 以模块为准创造一个模块的名称空间
2. 执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
3. 在当前执行文件中拿到一个模块名
4.
需要注意的是:模块的重复导入会直接饮用之前创造好的结果,不会重复执行模块的文件,即重复导入会发生:spam=spam=
模块名称空间的内存地址
from 模块名 import 具体的功能
from.....import....首次导入模块发生了3件事:
- 以模块为准创造一个模块的名称空间
- 执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
- 在当前执行文件的名称空间拿到一个名字,该名字直接指向模块中的某一个名字,意味着可以不用加任何前缀而直接使用
- 优点:不用加前缀,代码更加精简
- 缺点:容易与当前执行文件中名称空间中的名字冲突
import 和 from...import的异同
相同点:
1. 两者都会执行模块对应的文件,两者都会产生模块的名称空间
2. 两者调用功能时,需要跑到定义时寻找作用域关系,与调用位置无关
不同点:
import需要加前缀;from...import不需要加前缀
循环导入
模块搜索路径的顺序
# 内存 --> 内置 --> 自定义
Python 文件的两种用途
python文件总共有两种用途,一种是执行文件;另一种是被当做模块导入。
编写好的一个python文件可以有两种用途:
- 脚本,一个文件就是整个程序,用来被执行
- 模块,文件中存放着一堆功能,用来被导入使用