【Python】第十一课 模块

11.1 模块的导入

什么是模块,在python中如果需要在一个python文件中使用其他的python文件中的方法和变量时,需要将其他的python文件导入进来,那么我们把这个被导入的python文件称为模块。其实类似于Java中的导包。

创建模块Mode1.py

# 摄氏度转华氏度
def c2f(cel):
    fah=cel*1.8+32
    return fah
#华氏度转摄氏度
def f2c(fah):
    cel=(fah-32)/1.8
    return cel

导入模块进行使用

Test10.py

# 模块
# 导入Mode1
import Mode1
c2f=32
f2c=99
print("{0}摄氏度=%.2f华氏度".format(c2f) % Mode1.c2f(c2f))
print("{0}华氏度=%.2f摄氏度".format(f2c) % Mode1.f2c(f2c))
#运行结果
#32摄氏度=89.60华氏度
#99华氏度=37.22摄氏度

导入模块的方式还有其他的写法:

# 模块
# 从模块Mode1中导入c2f方法和f2c方法
from Mode1 import c2f,f2c
c2f=32
f2c=99
print("{0}摄氏度=%.2f华氏度".format(c2f) % c2f(c2f))
print("{0}华氏度=%.2f摄氏度".format(f2c) % f2c(f2c))

也可以给模块定义别名,方便开发者理解

# 模块
# 从模块Mode1定义别名
import Mode1 as m
c2f=32
f2c=99
print("{0}摄氏度=%.2f华氏度".format(c2f) % m.c2f(c2f))
print("{0}华氏度=%.2f摄氏度".format(f2c) % m.f2c(f2c))

11.2 __name__='__main__'

当模块文件自己也需要使用自己方法,当测试文件调用模块的时候,会把模块中测试运行的代码也会执行。

Mode1.py

# 摄氏度转华氏度
def c2f(cel):
    fah=cel*1.8+32
    return fah
#华氏度转摄氏度
def f2c(fah):
    cel=(fah-32)/1.8
    return cel

def test():
    print(c2f(32))
    print(f2c(99))

test()
其运行结果:
    89.6
	37.22222222222222

通过测试类调用Mode1.py时,会把Mode1.py本身的测试方法也会输出

Test10.py

# 模块
# 从模块Mode1定义别名
import Mode1 as m
c2f=32
f2c=99
print("{0}摄氏度=%.2f华氏度".format(c2f) % m.c2f(c2f))
print("{0}华氏度=%.2f摄氏度".format(f2c) % m.f2c(f2c))
运行结果:
    89.6
	37.22222222222222
	32摄氏度=89.60华氏度
	99华氏度=37.22摄氏度

通过运行,可看到,我们其实只想输出我们测试类中的结果,但是把Mode1本身的测试方法也输出了,这时候我们如果不想输出模块自己的结果,需要加上如下代码

在Mode1.py中运行test()方法时,加上判断,判断当前是否直接运行本身文件

# 当运行的是本类时,才运行该方法
if __name__ == "__main__":
    test()

则外部调用该模块的时候,不再执行test()模块自身的调用。

11.3 搜索路径

如果模块文件和测试运行文件不在同一路径下,则会导入失败,需要先找到模块所在路径,然后进行导入模块。

11.4 包

将不同功能的py文件放置在不同的包中,其有点是在做项目时,文件越来越多,根据不同的包找我们需要的文件可以加快我们的开发效率,这就好比,我们新买了一个书架,当我们就两三本书的时候,你可以随便放在书架上,你需要的时候也能快速的找到,当书架上的书越来越多,堆满了,如果不对这些书做分类摆放,想立马找到你想要的书,可能不是那么简单了。在我们程序中把分类的过程称为包,因此我们需要习惯在建立项目后,就要创建包,将不同的py文件进行分包处理,归类才能增加效率。创建包的时候会自动创建__init__.py作为初始化该包的数据,该文件不需要我们做任何处理,但一定需要这个文件,不能删除。

你可能感兴趣的:(Python,python,pip,pycharm)