python(九)模块

1,模块定义

通常情况下,当我们的程序代码太多的时候,就必须要使用一种方式来组织我们的代码。这样做可以提高代码的复用率,也可以使程序更加的结构化,有助于后期的扩展和维护。那这种方式通常情况我们的做法是把代码分割成函数,或者组织成类。

但是当有很多很多类或者函数的时候,又可能会出现命名冲突,于是就引入了命名空间的概念。

命名空间是个大的概念,在各种语言的实现方式不一样。

在PHP中就直接叫做命名空间,划分方式是通过文件夹的名称和路径。

在Java中称之为包,划分方式也是通过文件夹的名称和路径。

那么,在Python中,同样也叫做包,当然了,划分方式也是采用文件夹名称和路径,Python和Java不同之处在于Python要求每个包下面必须要包含一个叫“__init__.py”的文件,不管里面有没有内容!

那么什么是模块呢?

Python中,任意的一个“.py”文件都可以看做是一个模块。不过,我们当前讨论的模块是组织在包中的,就像下面这样:

131918_6SnT_1156660.png

上面的案例中,定义了两个包 iopackage 和 socketpackage,每个包下面含有两个模块。

为什么是两个?因为我们说在包中每个“.py”文件就是一个模块,所以“__init__.py”这个文件,虽然特殊,但是实际上它也是一个模块。

2,使用模块

模块的使用,需要分两种情况说明。

第一种:没有包的时候,怎么使用模块?

133958_pDtU_1156660.png

第二种:有包的时候,怎么使用模块?

134430_fBL0_1156660.png

可以看到,模块的导入,主要使用 import 关键字。如果,你的模块位于某一个包中,则需要使用 from 关键字来通知 python 是从那个包中来导入那个模块。

2.1 import 补充

通常情况下,当使用 import pk_name 的时候,导入的其实是 __init__.py 模板,那么其它模块式不可用的。

124232_aV6V_1156660.png

如果你要使用包中其它的模块,则就需要采用 from  pk_name  import  module_name  这种形式,或者给它起个别名,这样以后就可以使用这个别名来引用到模块:from  pk_name  import  module_name as alise_module_name

当然,你也可以使用  from  pk_name  import  *  但是这个需要在模块中做一些配置,这个后面【模块探究】会说到。

3,模块的路径

当使用 import 导入模块的时候,python会根据“环境变量”的路径来搜寻模块所在的位置,找到之后就会把它引入到当前的位置,而且只引入一次!在引入之后,会生成一个 .pyc 的文件,该文件是真正的模块文件的一个编译后的版本,python会直接使用它,当然删除它对原模块文件没有任何的影响,在必要的时候,python还是会去重建它。

现在,来打印一下 python 的环境变量的路径:

130745_KHdC_1156660.png

可以看到,python 在上面列出来的所有的目录中去寻找对应的模块文件,当有些时候,你可能需要去更改一下这个值,以便python能够正确的找到你的模块(虽然不提倡这么做),就像下面这样:

131043_e6Y4_1156660.png

4,安装第三方模块

python有一种称谓叫做“自带电池”,说的就是python中有各种各样的第三方模块。这些模块可以使你的开发变的很容易。

那在使用一个三方模块之前,还是要先安装它。

python 中安装第三方模块式通过 setuptools 这个工具完成的,目前封装了 setuptools 包管理工具有:easy_install 和 pip,目前官方推荐使用的是 pip。

如果你是使用 linux 系统那么,安装 pip 这个步骤就可以跳过。如果你是使用 windows 那么在安装 python 的时候请确保勾选了 pip 和 add python.exe to path。

那现在,我们使用的是 easy_install来安装,所以还是要先安装一下 easy_install,

打开链接:https://pypi.python.org/pypi/setuptools#windows

找到对应的:132434_lSNz_1156660.png

右击链接另存为,然后在命令行下执行:

132527_mpHz_1156660.png


安装成功,就是这样子:

132606_Y3p7_1156660.png

运行: easy_install 如果,提示命令不存在,则需要把  “F:\Python27\Scripts” 加入到环境变量中。

然后我们来安装一个地三方包:Python Imaging Library 是python下一个非常强大的图像处理包。

所有的 python 包,都会在 https://pypi.python.org/pypi 这里进行注册,你可以从里面搜寻有用的包。

我们要安装的这个包的安装名称叫:PIL ,因此运行命令:easy_install PIL 

当报错如下的时候:你应该去给定的链接的地方,先下载并安装一下vc9,用来编译python包。

133057_UPAp_1156660.png

当安装 PIL 成功之后,就可以在程序中使用它。

那么如何使用它呢?先得看看它有什么!

5,模块探究

探究的模块,这里以上面一直用到,但是没对它做解释的模块“pprint”来做演示。

首先,通过 dir 函数,可以看到一个模块的结构,就像是这样:

133700_6COp_1156660.png

134029_G0Q6_1156660.png

首先,我们看到通过 dir  函数,打印出来很多的字符串信息,当然也就是变量或者函数信息。

那有些变量在前面加了“单下划线”,而有的再前后都加了“双下划线”,而有些则什么都没有加。

在 python 中,通过变量名这种特殊的写法,来设置变量的“作用域”。

约定俗称的是:前后都有“双下划线”的变量,具有特殊的意义,在python中可能会作为关键字采用,因此不建议开发者去这么定义变量。前面带“单下划线”的变量,表示该变量的作用范围仅限在当前模块中,开发者不应该在包的外面通过类似“moduleName.varName”的形式来访问它,那这里不应该并不是代表不能。其它的变量则表示属于公共的变量,没有“限制”。

变量“__all__”表示该模块中,当使用  from  pk_name  import  * 这种方式导入包的时候,有哪些方法可以被导入。

变量“__file__”表示该模块的路径

变量“__doc__”则是该模块的一些描述信息

现在,我在对应的“__file__”目录下,找到 pprint.py 这个文件,截图如下:

135155_ewhf_1156660.png

那在使用 模块 之前 ,还是应该先去看一下模块的相关说明以及相关可调用的方法以及对应方法的说明,这样使用起来就没有那么陌生了!

------------------------------------------------------华丽的分割线-------------------------------------------------

人性一点儿,笑个 16 像素的  ^_^


转载于:https://my.oschina.net/u/1156660/blog/371349

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值