这篇模块主要讲解的是模块的相关知识,首先说下什么是模块,简答一句话就是说模块即程序,.我们可以任何一段程序作为一个模块,在需要的时候直接导入即可。
1.模块存储在哪里
一般跟python的IDE放在一个目录下,其他目录如何放置下文将介绍
2.导入模块的三种方法
(1)import +模块名
(2)from 模块名 import 函数名(多个函数名之间用逗号隔开),也可以使用*作为通配符
(3)import 模块名 as 新名字
3.使用模块中的方法
使用 模块名.方法名 即可
下面列举一个关于模块的简单的例子:
首先在python.exe目录下新建一个Convert.py模块,在里面写了华氏度与摄氏度相互转换的两个函数,代码如下:
def ctf(x):
return (32+x)*1.8
def ftc(x):
return (x-32)/1.8
然后在一个另一个程序中导入模块,然后调用方法。
import Convert
print(Convert.ctf(100))
这里只是使用了导入包的第一种方法,其余两种方法类似,不过推荐使用第三种方法,尤其是模块名称过长的时候。
4.如何做到”家丑不外扬”
如果模块中存在着测试代码,又不想删除,同时又不想让引用模块时输出无用的数据,我们可以使用“if _name_==’_main_‘”语句。
例如我在刚刚的程序中加入测试语句。
def ctf(x):
return (32+x)*1.8
def ftc(x):
return (x-32)/1.8
print("测试数据:",ctf(100))
然后再在另一个调用模块的程序中运行该程序:
结果打印出了我们不想看到的一行数据。
我们可以这样修改代码:
def ctf(x):
return (32+x)*1.8
def ftc(x):
return (x-32)/1.8
if __name__=='__main__':
print("测试数据:",ctf(100))
不要忘记if语句的格式与缩进
再去执行一下程序:
这样我们的“家丑”就不回外扬了。
再简单的解释一下为什么这样家丑就不回外扬了,其实打印几个参数就明白了:
def ctf(x):
return (32+x)*1.8
def ftc(x):
return (x-32)/1.8
print(__name__)
if __name__=='__main__':
print("测试数据:",ctf(100))
我们在刚刚的模块的程序中加入了print(name)加一句代码,然后看其打印内容:
原来在模块中的name为main,而除了模块之外的name就不是main了,这样就将问题解决了。
import Convert
print(Convert.ctf(100))
print(__name__)
print(Convert.__name__)
其实不难理解,只有在自己的程序中的name字段的值才会为main.
5.搜索路径问题:进一步解决了模块放在哪里的问题
使用下面两条语句,可以查看python在执行语句时从哪里搜索模块进行导入。
import sys
print(sys.path)
当然我们也可以手动添加路径,由于path是一个列表,我们可以使用append方法进行追加。
sys.path.append("你的模块的路径\\")
这样便彻底解决了模块放在哪里的问题
6.包
包可以看作是一个专门放置模块的文件夹,创建一个包分为一下几步:
(1)创建一个文件夹,用于存放相关的模块,文件夹的名字即包的名字
(2)在文件夹中创建一个init.py的模块文件,内容可以为空,可以理解为这是一个包的标识性文件
(3)将相关的模块放入到文件夹中
导入包与导入模块类似:
import 包名.模块名 as 新名字
好了,关于模块的知识就到这了,以后再有会及时更新。