目录
一、模块的简介
模块的本质
模块就是具有一定功能的
py
文件
python
的模块可以直接导入对应的功能,非常好用,降低了功能实现的难度,在早期,其他语言的程序员喜欢叫python
语言的使用者为调包侠,但是后来由于python
调包的功能可以实现很复杂的功能,也变得使用面更为广泛了,其他语言的程序员也开始使用python
模块的多种表现形式
1.py文件
2.包(包含py文件的文件夹,内部有双下init
)
3.被编译为共享库或ddl
的c或c++
扩展
4、使用c
语言编写并链接到python
解释器的内置模块
二、模块的两种导入语句
import
模块名称
from
模块名称 import
名称
两种模块在导入单个的
py
文件的时候需要注意,import
是导入整个模块,from
是导入单个的名称
在使用的时候可以看到,import
方式导入的模块需要在用:模块名称.名称的形式来调用,from
可以直接用名称调用,如果想要调所有的名称,可以用*号代替。使用星号的时候也可以用双下all
来设置外界能获得的名称,但是不能影响到import
方式导入的模块
import
在使用的时候相当于给这个执行文件一个模块名称,然后另外建立了一个名称空间存放自己的名称,当调用模块中的名称就传过去。如果使用from
方式的话就会直接把这个名称传给被执行文件的全局名称空间,如果有重复的名称会产生名称的顶替
三、导入文件的补充
当我们在调用多个模块的时候,可以用逗号隔开,连写多个,但是需要注意,最好根据模块的功能来编写,功能相似的一起导入
导入模块的时候如果名称很复杂,我们可以用as 名称的方式进行重命名,在代码中调用的时候用这个自己命名的名称就可以达成目的
如果重复导入模块,容易出现错误,因此不推荐,但是真的遇到的时候,需要知道还是一样的流程,还是从执行文件运行,到了导入模块之后运行被导入文件,在被导入文件中出现导入执行文件的动作,这个时候就是在走一遍执行文件的代码,然后再运行导入文件中导入语句后面的代码,执行完导入文件后回到执行文件中运行导入文件后面的代码。中间运行的时候还要注意导入语句的位置,不能出现先调用后定义的情况。
四、判断文件类型
在运行模块导入操作的时候我们需要分清楚哪个是执行文件哪个是模块文件,这里用到了一个方法
双下name
,当这个方法出现在执行文件中会返回双下main,当这个方法出现在模块文件中会返回模块名称
# 判断当前文件是执行文件还是导入文件
__name__在不同的文件中,结果是不一样的
在执行文件中,结果是 __main__
在导入文件中,结果是:模块名
if __name__ == '__main__':
print('当前是执行文件')
if __name__ == '__main__':
print('123')
五、模块的查找顺序
内存
内存中的已经运行起来的模块会先被使用,我们可导入模块然后使用time.sleep停止几秒,期间删除模块文件,最后会发现程序仍能运行一次
内置模块
当我们在使用模块的时候会先去内置模块中查找,这里需要注意,如果我们的创建的模块名称跟内置模块的一样,会导致模块不被调用,被调用的会是内置模块
sys.path
这是
python
解释器的环境变量,也就是一个查找的路径,在前两个地方找不到就会根据这里的路径来查找模块,如果找不到就会报错
内存>>>内置>>>sys.path
当查找模块找不到的时候,如何解决?
# 1. 把模块所在的路径添加到环境变量中
import sys
sys.path.append('')
2. from 模块名1.模块名2 import 模块3
标签:__,文件,导入,名称,模块,import,文件类型
From: https://www.cnblogs.com/oiqwyig/p/17190657.html