0%

Python模块和包

模块和包的概念

调用模块时,由于同名模块的完整模块名不同(p1.util和p2.util),所以此时同名的模块不产生冲突。

导入模块

Python使用import语句导入一个模块。例如,导入系统自带的模块math。可以认为math就是一个指向已导入模块的变量,通过该变量,可以访问math模块中所定义的所有公开的函数、变量和类。

1
2
3
import math
math.pow(2, 0.5) # pow是函数 # 1.4142135623730951
math.pi # pi是变量 # 3.141592653589793

如果只希望导入用到的math模块的某几个函数,而不是所有函数,可以用下面的语句。这样,可以直接引用pow, sin, log这3个函数,但math的其他函数没有导入进来,

1
2
3
from math import pow, sin, log
pow(2, 10) # 1024.0
sin(3.14) # 0.0015926529164868282

如果遇到名字冲突,比如math模块有一个log函数,logging模块也有一个log函数:如果使用import导入模块名,由于必须通过模块名引用函数名,因此不存在冲突;如果使用from…import导入log 函数,势必引起冲突。这时,可以给函数起个“别名”来避免冲突。

1
2
3
4
5
6
7
8
import math, logging
print(math.log(10)) # 调用的是math的log函数
logging.log(10, 'something') # 调用的是logging的log函数

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

动态导入模块

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

1
2
3
4
import something
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named something

Python中存在不同模块提供相同的功能,比如io和cStringIO都提供了StringIO这个功能。这是因为Python是动态语言,解释执行,因此Python代码运行速度慢。如果要提高Python代码的运行速度,最简单的方法是把某些关键函数用C语言重写,这样就能大大提高执行速度。同样的功能,io是纯Python代码编写的,而cStringIO部分函数是C写的,因此cStringIO运行速度更快。
利用异常捕捉ImportError错误,可以在Python中动态导入模块,

1
2
3
4
try:
from cStringIO import StringIO
except ImportError:
from io import StringIO

上述代码先尝试从cStringIO导入,如果失败了(比如cStringIO没有被安装),再尝试从io导入。这样,如果cStringIO模块存在,则将获得更快的运行速度,如果cStringIO不存在,则顶多代码运行速度会变慢,但不会影响代码的正常执行。
try的作用是捕获错误,并在捕获到指定错误时执行except语句

__fulture__

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

1
2
3
4
5
6
7
8
9
10
# Python 2.7的整数除法运算结果仍是整数
10 / 3 # 3

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

# 要在Python 2.7中引入3.x的除法规则,导入__future__的division
from __future__ import division
print 10 / 3 # 3.3333333333333335

当新版本的一个特性与旧版本不兼容时,该特性将会在旧版本中添加到__future__中,以便旧的代码能在旧版本中测试新特性

第三方库的安装

常用的pip命令
pip install <第三方库名>       安装指定的第三方库
pip install -U <第三方库名>    使用-U标签更新已安装的指定第三方库
pip uninstall <第三方库名>      卸载指定的第三方库
pip show <第三方库名>      列出某个指定第三方库的详细信息
pip search <关键词>         根据关键词在名称和介绍中搜索第三方库

注:某些第三方库提供下载的不是可执行文件,而是源文件。这时需要下载后需要在本地环境编译后安装,而由于本地环境的问题,常常发生安装失败,这时可以使用文件安装方法。

天生我材必有用,千金散尽还复来~
  • 本文作者: XTLei
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
-------------本文结束感谢您的阅读-------------