Python进阶笔记(3)_ 模块和包

导入模块
要使用一个模块,我们必须首先导入该模块。Python使用import 语句导入一个模块。例如,导入系统自带的模块 math:

import math

你可以认为 math 就是一个指向已导入模块的变量,通过该变量,我们可以访问 math 模块中所定义的所有公开的函数、变量和类。例如,我们调用幂函数 pow()

import math
print math.pow(2, 0.5)

可以看到,调用时要写成 math.pow , 这样写的好处是,假若另外一个模块中也包含一个名字相同但功能不同的pow()函数时,可以做到完美区分。例如下例,math 和logging 模块都包含 log 函数:

import math, logging
print math.log(10)   
logging.log(10, 'something')  

当然,如果我们觉得math,log,math.pow 这样的书写太麻烦,也可以用 如下形式调用模块:

from math import pow, sin, log
print pow(2,3), sin(3.141592635), log(10)
但这样一来,面对同名异意的函数来说就会失效,因为他们的书写方式都一样。怎么办呢?

来看看下例就清楚了。

from math import log
from logging import log as logger   
print log(10)   
logger(10, 'import from logging')  

还有一种导入方式是动态模式
如果导入的模块不存在,Python 解释器会报 ImportError 错误。或者有时两个不同的模块提供了相同的功能,比如 StringIO 和 cStringIO 都提供了StringIO这个功能。由于同样的功能,StringIO 是纯 Python 代码编写的,而 cStringIO 部分函数是 C 写的,因此 cStringIO 运行速度更快。这时,我们就需要用动态模式进行调用,先调用cStringIO 试试看,如果存在,那最好,如果没有,就用 StringIO 。其书写方法如下:

try:
    from cStringIO import StringIO
except ImportError:
    from StringIO import StringIO
try 的作用是捕获错误,并在捕获到指定错误时执行 except 语句。
上例中调用的函数名称相同,都是StringIO。若不相同怎么办呢? 想起来 from logging import log as logger 了吗?对了,只要用 form ... import ... as 将两个函数名字统一即可。

__future__
Python的新版本会引入新的功能,但是,实际上这些功能在上一个老版本中就已经存在了。要“试用”某一新的特性,就可以通过导入__future__模块的某些功能来实现。
例如,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。对,没写错,是3.3333333333333335。关于这种奇怪的现象,其实在 Python 和其他几乎所有现代编程语言,实数不能准确表示。10/3 的表示有一个小错误在17小数位。
当新版本的一个特性与旧版本不兼容时,该特性将会在旧版本中添加到 __future__ 中,以便旧的代码能在旧版本中测试新特性。


创建自己的模块

先看如下例子是怎么实现模块的创建的。


可以看到,其实和平时定义的函数没什么区别,只是在另外一个程序中,直接调用定义函数的文件名.py即可。


dir()函数
这里再介绍一下 dir() 函数,它可以返回模块定义的名称列表。


该例中先是观察dir的作用,然后我们定义一个新的变量 day ,再检验dir,发现在输出最后一项增加了一个 'day'。我们使用 del 语句删除当前模块中的变量/属性,这个变化再一次反映在dir的输出中。



安装第三方模块

一般有两种语句,一个是 easy_install,一个是 pip ,后者已经内置到 Python 2.7.9 当中。这要求在安装Python2.7.9时,确认 pip 已经安装。

例如,现在要安装一个 web.py 的第三方模块,先从附件中打开命令提示符,然后在命令提示符中输入

pip install web.py
如果想查找其它更多的第三方模块信息,可以登录 https://pypi.python.org 进行搜索。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值