python中模块介绍

时间:2021-11-03 00:19:57

一,模块概念

在计算机程序开发的过程当中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。为了编码更加容易维护,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就会相对减少。很多编程语言就采用这种组织代码的方式。在python中,一个.py文件就称之为一个模块(Module).

模块有有什么好处呢?

最大的好处就是大大提高了代码的可维护性。

其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。

所以,模块一共三种:

*python标准库

*第三方模块

*应用程序自定义模块

模块导入方法

1 import 语句     

                         1 | import modulel 

当我们使用import语句的时候,python解释器是怎样找到对应的文件的呢?答案就是解释器有自己的搜索路径,存在sys.path里。

因此如果当前目录下存在与要引入的模块同名的文件,就会把要引入的模块屏蔽掉。

2,from...import 语句

    1 | from modname impott name1

这个声明不会把整个modulename模块导入到当前的命名空间中,只会引入它里面的name1函数

3 from ...import * 语句

     1| from modname import * 

这提供了一个简单的方法导入一个模块中所有的项目。但是这种声明容易覆盖已有的定义,不建议使用。

4 运行本质

1 |# import test 

2 | #2 from test import add 

无论1还是2 ,首先通过sys.path 找到test.py ,然后执行脚本(全部执行),区别是1会将test这个变量名加载到名字空间,而2只会将add这个变量名加载进来。

包(package)

如果不同的人编写的模块名相同了怎么办?为了避免模块名冲突,python又引入了按目录来组织模块的方法,称为包(package).

举个例子,一个abc.py的文件就是一个名字叫abc的模块。一个xyz.py的文件就是一个名字叫做xyz的模块。

现在,假设我们的abc和xyz这两个模块名字与其他模块冲突了,于是我们可以通过包来组织模块,避免冲突。方法是选择一个顶层包名:python中模块介绍

引入包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。现在view.py模块的名字就变成了hello_diango.app()1.views,类似的,manage.py的模块名是hello_diango.manage.

注意 ,每一个包下必须包含一个_init_,py的文件,这个文件是必须存在的,否则,python就把这个目录当成普通目录(文件夹),而不是一个包。_init_.py可以是一个空文件,也可以是python代码,因为_init_.py本身就是一个模块,而它的模块名就是对应的包的名字。

调用包就是执行包下的_init_.py文件