模块
模块就是对程序的封装。容器是数据的封装,函数是语句的封装,类是方法和属性的封装。

模块的创建

python 下 pom 模式从封装到调用 python怎么封装模块_python


在Python安装目录下创建模块,在模块内写入函数。

python 下 pom 模式从封装到调用 python怎么封装模块_封装_02

再从IDLE中进行调用。

导入模块
第一种: import 模块名
步骤如模块的创建
第二种: from 模块名 import 函数名

from Temperature import c2f, f2c
print("32摄氏度 = %.2f华氏度"% c2f(32))
print("99华氏度 = %.2f摄氏度"% f2c(99))

32摄氏度 = 89.60华氏度
99华氏度 = 37.22摄氏度

或者可以将impor后面的函数名改成 * ,这样可以将模块内函数全部导入

python 下 pom 模式从封装到调用 python怎么封装模块_Python_03

第三种: import 模块名 as 新名字

python 下 pom 模式从封装到调用 python怎么封装模块_封装_04


**if name = ‘main’ **

作用:为了让Python知道该模块作为程序运行还是导入到其他程序。我们创建了一个模块后,会在模块文件内写测试模块

python 下 pom 模式从封装到调用 python怎么封装模块_python_05


python 下 pom 模式从封装到调用 python怎么封装模块_搜素_06


但是,当我们调用该模块时,测试语句也会被执行

python 下 pom 模式从封装到调用 python怎么封装模块_Python_07


python 下 pom 模式从封装到调用 python怎么封装模块_封装_08

所以为了解决这个问题我们可以使用 if name = “main

python 下 pom 模式从封装到调用 python怎么封装模块_python_09


当我们在执行其他程序时,name__是等于__main__的,而此时模块里的__name__是模块名,而当我们直接执行模块文件时,模块里的__name__就是__main,因此我们可以以此来分辨模块是作为主程序来执行还是作为其他程序来执行

def c2f(cle):
    return cle * 1.8 +32

def f2c(fah):
    return (fah-32)/1.8

def test():
    print("测试,0摄氏度 = %.2f华氏度" % c2f(0));
    print("测试,0华氏度 = %.2f摄氏度" % f2c(0));

if __name__ == "__main__":
    test()

作为主程序

python 下 pom 模式从封装到调用 python怎么封装模块_封装_10


作为其他程序

python 下 pom 模式从封装到调用 python怎么封装模块_Python_11


此时测试代码并没有执行搜素路径

写好的模块应该放哪里?

Python会在自己默认的搜素路径里寻找模块,要是没有则会报错,我们可以通过导入sys模块,执行sys.path来查看路径

python 下 pom 模式从封装到调用 python怎么封装模块_Python_12


由于sys.path返回的是一个列表,所以我们可以通过sys.path.append增加其搜索路径

包(package)
创建包
1.创建一个文件夹,用于存放相关模块,文件夹的名字即包的名字;
2.在文件夹中创建一个__init__.py的模块文件,内容可以为空; (一定要创建__init__.py这个文件,内容可以为空,这是为了告诉Python把这个文件当成一个包)
3.将相关的模块放入包中

包中模块的导入
import 包名.模块名