最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

天天微速讯:模块简介、模块的两种导入语句、导入文件的补充、判断文件类型、模块的查找顺序

来源:博客园
目录
  • 一、模块的简介
  • 二、模块的两种导入语句
  • 三、导入文件的补充
  • 四、判断文件类型
  • 五、模块的查找顺序

一、模块的简介

模块的本质

模块就是具有一定功能的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 syssys.path.append("")2. from 模块名1.模块名2 import 模块3

关键词: