洗礼灵魂,修炼python(48)--巩固篇—模块

模块

其实前面都说过的,不过还是系统的再说一次,相信学到这,大部分都被搞忘了吧,所以再提一下,也为后面的博文做铺垫

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可以用来做模块测试

 

posted @ 2017-10-29 21:29  Eeyhan  阅读(195)  评论(0编辑  收藏  举报