模块
其实前面都说过的,不过还是系统的再说一次,相信学到这,大部分都被搞忘了吧,所以再提一下,也为后面的博文做铺垫
1.什么是模块
在程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护,不断的滚雪球式的增长。为了维护好代码,我们把很多类和函数分组,分别放到不同的python可读的py文件里,这样就解决了问题,让主程序文件的代码减少,很多编程语言都采用这种组织代码的方式,在html标签里也一样,把样式写入css里,要用的使用再链接css样式表就行。而这里的一个.py文件就称之为一个模块(Module)
模块也有另一个名称,库,库又分标准库和第三方库,而内置的库(在安装python时就已经带有的库)或者说模块就是标准库,而需要使用pip命令安装的库就叫第三方库。
2.有哪些模块
因为python是开源的,pypi等各大社区里也有很多能人志士不断的开发整合各色各样的库(模块)。
1)而内置的库怎么查看呢?
我们知道查看内置方法是用dir(__builtins__),查看库又是什么呢?借助sys模块
(只截取了部分)
sys.modules方法就可以查看所有的内置库,会列出详细的库名和库的路径,当然如果你只想看库名,可以使用命令sys.modules.keys()
(只截取了部分呢)
也可以使用help()函数查看:
- help()
- modules
(只截取了部分)
上面有方法是查看所有已存在的模块的,自己去研究了
2)查看第三方模块,在终端界面,使用pip list或者pip freeze查看
注意:使用pip list时出现的红色字段只是一个警告,意思是说以后pip list的默认格式会采用columns,不用在意,都能正常使用的,如果你实在看不惯可以有方法解决,详细的自己百度吧
3.怎么使用模块
使用命令导入:
import XX
例:
from XX import XX
例:
当导入模块下的方法名和其他模块的方法名重复,可以使用as取个别名。
比如math模块里的sqrt和cmath模块里的sqrt方法,例:
也可以使用from XX import * 导入模块里的所有函数,但此法只能导入XX的类里__init__下的方法,如果是隐藏方法的话使用命令from XX import *则不能被导入
4.命名空间
什么是命名空间,比如上面的命令from math import sqrt 中的math就是命名空间,每个空间相互独立,互不影响,所以才会存在不同模块有相同方法名
5.模块的作用:
最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。
使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突。
6.__name__= ”__main__”
我们在很多时候都会使用这段代码,其实这个我前面也说过的。
- __name__指当前的主程序
- __main__指模块
主程序:指当前模块的主体程序,并不是__name__。无论当前模块是被别的模块导入还是作为脚本直接运行,都会执行这部分代码
__name__,指模块应该如何被加载,如果模块是被另一个py文件导入,__name__的值就是py文件名。如果模块是直接执行,__name__的值就是自身,即__main__,本模块或者叫主体程序
注意:
所有的模块都有能力执行代码,只是会不会返回结果而已。建议做法是,除了真正需要导入模块才能执行的功能外,一般功能尽量自定义函数解决;
__name__==’__main可以用来做模块测试
转载于:https://www.cnblogs.com/yangva/p/7751363.html