(9)什么是模块和包

什么是模块

计算机开发过程中,随着程序代码越写越多,在一个文件夹里代码就会越来越长,越来越不容易维护

为了编写可维护的代码,把函数分数,分别放到不同的文件里,这样,每个文件包含的代码就相对减少,在Python中一个.py文件就是一个模块

模块分为三种

1、内置标准模块

2、第三方开源模块

3、自定义模块

调用模块的方式

1、import module_name(module_name就是模块名)

PS:import 模块的时候必须先要用sys模块下的path方法定义好模块的调取路径,否则无法调取

2、from module import xx (modulie=文件夹名称)

PS:这样倒入比较方便,不用做调用路径设置,缺点就是如果调用的模块名和代码中的函数名相同,则容易被覆盖

3、from spam import read1 as read(从文件夹倒入模块并调用模块下的方法并重新命名)

PS:如果遇到自定意义模块下的函数名和代码下的函数名相同,或者调用的模块下的方法名字过长,那么在调用的时候可以自己重命名

4、from spam import read1,read2,money(连续调用一个模块下的多个函数)

5、from spam import *  (调取指定文件夹下的所有模块)

调用的时候区分模块和文件

编写好的一个python文件可以有两种用途

一:脚本,一个文件就是整个程序,用来被执行

二:模块,文件中存放着一堆功能,用来被导入使用

python为我们内置了全局变量__name__

当文件被当做脚本执行时:__name__ 等于'__main__'

当文件被当做模块导入时:__name__等于模块名

PS:写好的代码最后加上这个 if __name__ == '__main__'语句,然后将文件调用的指令放入这个语句后面,则在倒入调用的时候不会执行,而直接执行这个文件的时候才会执行代码下的执行命令

什么是包

包就是一个包含有__init__.py文件的文件夹,所以其实我们创建包的目的就是为了用文件夹将文件/模块组织起来

需要强调的

1. 在python3中,即使包下没有__init__.py文件,import 包仍然不会报错,而在python2中,包下一定要有该文件,否则import 包报错

2. 创建包的目的不是为了运行,而是被导入使用,记住,包只是模块的一种形式而已,包的本质就是一种模块

包的本质就是一个文件夹

那么文件夹唯一的功能就是将文件组织起来 随着功能越写越多,我们无法将所以功能都放到一个文件中,于是我们使用模块去组织功能,而随着模块越来越多,我们就需要用文件夹将模块文件组织起来,以此来提高程序的结构性和可维护性

关于包相关的导入语句也分为import和from ... import ...两种

但是无论哪种,无论在什么位置,在导入时都必须遵循一个原则:

凡是在导入时带点的,点的左边都必须是一个包,否则非法

可以带有一连串的点,如item.subitem.subsubitem,但都必须遵循这个原则。

但对于导入后,在使用时就没有这种限制了,点的左边可以是包,模块,函数,类(它们都可以用点的方式调用自己的属性)

import导入文件时,产生名称空间中的名字来源于文件,import 包,产生的名称空间的名字同样来源于文件,即包下的__init__.py,导入包本质就是在导入该文件

包A和包B下有同名模块也不会冲突,如A.a与B.a来自俩个命名空间

原文地址:https://www.cnblogs.com/shizhengquan/p/10082769.html