Python模块和包

来源:互联网 发布:sql查询工资相同语句 编辑:程序博客网 时间:2024/05/17 22:16

在Python中,同样具有模块和包来管理代码

模块:每一个python文件就是一个模块,例如index.py这就是一个模块;
:在文件系统中,一个文件夹就是一个包,在python中,一个文件夹中需要有__init__.py文件,每个文件夹中必须要有这个文件,这样python才可以把这个文件夹当成一个包来处理;

1.导入python的内建模块math

import mathprint math.sqrt(4) # 执行math模块中sqrt开平方函数结果输出:2

倘若只想用到math模块中的几个函数,那我们不必把整个math模块都导入进来:

from math import pow, sin, log, sqrtprint sqrt(4) # 这样我们可以直接用sqrt()函数

如果这样的话会出现一个问题:如果两个模块中都存在相同名字的函数(方法),引入到同一个文件中就会产生冲突。
这种情况下我们可以不用from...import...方法引入,我们将用上面的第一种引用方法引入:

import math, loggingprint math.log(10)print logging.log(10)

当然如果非要用from...import...方法的话也是有解决办法的,
我们可以给冲突的函数名称用as变更一下:

from math import logfrom logging import log as logger # 现在loggin里的log函数名在本文件中变成了loggerprint log(10) # 调用的是math模块中的log函数print logger(10) # 调用的是logging模块中的log函数

2.动态导入模块
如果要导入的模块不存在,python将会报错,这样我们的代码就不能执行下去了,为了解决这个问题,我们需要动态的导入模块;
有的时候两个不同的模块提供了相同的功能,这样我们可以利用捕捉错误语句来动态的导入模块:
python 2.6/2.7提供了json模块,但python 2.5以下版本没有json模块,不过可以安装一个simplejson模块,这两个模块提供的函数名和功能都一模一样。
下面动态导入json模块:如果json模块在当前python版本中存在,那么将其引进来,如果不存在,将会报错,try将捕获错误,并在捕获到指定错误时执行except语句。这样就会将simplejson命名为json引进来。

try:    import jsonexcept ImportError:    import simplejson as jsonprint json.dumps({'python':2.7})

3.__future__的使用
__future__是个模块,当python新版本的一个特性与旧版本不兼容时,该特性将会在旧版本中添加到__future__中,以便旧的代码能在旧版本中测试新特性。
例如:
①在python 3.x中,字符串统一为unicode,不需要加前缀u,而以字节储存的str则必须加前缀b,利用__future__unicode_literalspython 2.7中编写unicode字符串。

from __future__ import unicode_literalss = 'hello word'print isinstance(s, unicode)

②在python 2.7中整数除法结果仍是整数,但是python 3.x已经改进了整数的除法算法,用’/’除得到浮点数,用’//’除得到整数,利用__future__中的division可以在python 2.7中引入3.x的除法法则:
2.7中:

pirnt 10/3 # 3

3.x中:

print 10/3 # 3.3333333335print 10//3 # 3

在2.7中使用3.x的除法法则:

from __future__ import divisionprint 10/3 # 3.3333333333335

最后提一点注意 from __future__ import ???语句要写在代码的开头,因为不写在开头会报错,python不知道要用哪个版本的规则去解释代码;

3.python安装第三方模块
python提供的模块管理工具:
①easy_install
②pip(推荐,已经内置到python 2.7.9版本中)
如果你的python版本比2.7.9高,那么你可以直接在终端使用pip:
在终端输入

pip install web.py # 这样我们就安装了web这个模块

然后就可以在文件中引入web模块:

import web

贴出查找第三方模块的名字的网站:

http://pypi.python.org
0 0
原创粉丝点击