模块(module)
概念:
- 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。
- 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式,在python中,一个py文件就称之为一个模块
模块有什么好处?
- 最大的好处就是大大提高了代码的可维护性
- 其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块。包括python的内置模块和来自第三方的模块
模块的种类
- python标准库
- 第三方模块
- 应用程序自定义模块
另外,使用模块还可以避免函数名和变量名冲突,相同名称的函数和变量完全可以分别存在不同的模块中 ,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突。
第三方模块调用应用示例:
import cal
print(cal.add(5,6))
执行结果:
11
Process finished with exit code 0
程序执行效果:
-
从上面的执行结果中可以看出,python中确实没有cal这个模块,并且在pycharm中已经飘红了,说明是程序报错,但是在执行程序的时候,发现是没有任何报错的,说明这个程序是没有问题的,也就是这个模块的调用是没有任何问题的,只不过python的IDE——pycharm没有自动识别到这个模块
下面来查看第三方模块的搜索路径:
import sys
import cal #解释器通过搜索路径找到cal.py文件后,解释这个py文件,也就是执行这个py文件
print(cal.add(5,6))
print(sys.path)
执行结果:
11
['H:\\python_scripts\\study_scripts\\daily\\day19\\moudle_dir', 'H:\\python_scripts', 'D:\\Program Files\\JetBrains\\PyCharm 2019.2.4\\helpers\\pycharm_display', 'E:\\python_ide\\venv\\Scripts\\python36.zip', 'C:\\Users\\yuyan\\AppData\\Local\\Programs\\Python\\Python36\\DLLs', 'C:\\Users\\yuyan\\AppData\\Local\\Programs\\Python\\Python36\\lib', 'C:\\Users\\yuyan\\AppData\\Local\\Programs\\Python\\Python36', 'E:\\python_ide\\venv', 'E:\\python_ide\\venv\\lib\\site-packages', 'E:\\python_ide\\venv\\lib\\site-packages\\setuptools-40.8.0-py3.6.egg', 'E:\\python_ide\\venv\\lib\\site-packages\\pip-19.0.3-py3.6.egg', 'D:\\Program Files\\JetBrains\\PyCharm 2019.2.4\\helpers\\pycharm_matplotlib_backend']
Process finished with exit code 0
取出sys.path的路径分析:
['H:\\python_scripts\\study_scripts\\daily\\day19\\moudle_dir', 'H:\\python_scripts', 'D:\\Program Files\\JetBrains\\PyCharm 2019.2.4\\helpers\\pycharm_display', 'E:\\python_ide\\venv\\Scripts\\python36.zip', 'C:\\Users\\yuyan\\AppData\\Local\\Programs\\Python\\Python36\\DLLs', 'C:\\Users\\yuyan\\AppData\\Local\\Programs\\Python\\Python36\\lib', 'C:\\Users\\yuyan\\AppData\\Local\\Programs\\Python\\Python36', 'E:\\python_ide\\venv', 'E:\\python_ide\\venv\\lib\\site-packages', 'E:\\python_ide\\venv\\lib\\site-packages\\setupto