python进阶-- 02 如何使用模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python进阶-- 02 如何使用模块相关的知识,希望对你有一定的参考价值。

1.模块与包的概念

1.1概念

模块:代码多了之后,放在一个.py文件中不易维护,将代码拆分到多个.py文件中,每个.py文件就是一个模块。

包:模块多了之后,也容易重名,将每个开发开发的模块可以放到不同的包中,引用的时候使用包名.模块名。

1.2优势

同一变量名的变量在不同模块中互不影响

同一模块名的模块在不同包中互不影响

1.3引用举例

# p1->包名,util->模块名

>>> import p1.util

>>> print p1.util.f(2,10)

1.4如何区分包和普通文件夹

在文件系统中,一个包就是一个文件夹;

在python中,每一个包的下面必须要有一个__init__.py文件;

__init__.py文件即使是空的,也要有。

2.模块的导入

2.1直接import

import math

>>> math.pow(2, 0.5) # pow是函数

1.4142135623730951

>>> math.pi # pi是变量

3.141592653589793

2.2使用from ... import xxx

from math import pow, sin, log

>>> pow(2, 10)

1024.0

>>> sin(3.14)

0.0015926529164868282

2.3导入的模块中的方法/变量冲突问题

直接import的不会有冲突问题

使用from ... import xxx的如果有冲突,可以使用别名的方式

from math import log

from logging import log as logger   # logging的log现在变成了logger

print log(10)   # 调用的是math的log

logger(10, ‘import from logging‘)   # 调用的是logging的log

3.动态导入模块

3.1背景

如果导入的模块不存在,Python解释器会报 ImportError 错误;

有的时候,两个不同的模块提供了相同的功能

3.2原理

利用ImportError错误,通过异常处理try-except,我们可以实现动态导入模块

另,import xxx as xxx可以动态导入相同名称的模块为不同的使用名称

3.3举例

try:

    from cStringIO import StringIO

except ImportError:

    from StringIO import StringIO

try:

    import simplejson as json

except ImportError:

    import json

4.__future__试用新特性

4.1背景

Python的新版本会引入新的功能,但是,实际上这些功能在上一个老版本中就已经存在了。要“试用”某一新的特性,就可以通过导入__future__模块的某些功能来实现。

4.2举例

# Python 2.7的整数除法运算结果是整数,Python 3.x已经改进了整数的除法运算,“/”除将得到浮点数,“//”除才仍是整数

>>> print 10/3

3

>>> from __future__ import division

>>> print 10/3

3.33333333333

# 在Python 3.x中,字符串统一为unicode,不需要加前缀 u,而以字节存储的str则必须加前缀 b

>>> from __future__ import unicode_literals

>>> s = ‘am I an unicode?‘

>>> print isinstance(s, unicode)

True

5.安装第三方模块

5.1easy_install

5.2 python内置的pip(已经内置到2.7.9)

安装时候选择pip功能

 技术分享

安装完成后,即可在命令行使用pip install web.py来安装web.py这个第三方模块

 技术分享

第三方模块安装完成后,使用import web即可正常使用

第三方模块寻找:https://pypi.python.org/pypi

5.3python第三方模块

http://www.cnblogs.com/mmbbflyer/p/5787494.html

http://www.cnblogs.com/tester-l/p/5735230.html

以上是关于python进阶-- 02 如何使用模块的主要内容,如果未能解决你的问题,请参考以下文章

python进阶学习chapter02(列表字典集合操作)

python程序设计主要学啥

如何将 sqlite3 模块添加到 Python?

爬虫学习推荐目录

python3-开发进阶 heapq模块(如何查找最大或最小的N个元素)

Python进阶第十一篇模块(下)之常用模块