开始Python -- 模块(Modules)

1模块

1Python程序可以作为模块导入

l         Python程序保存为.py文件到指定目录,例如:c:/python/hello.py

# hello.py

print "Hello, world!"

l         告诉Python模块的位置,一种方法是将.py文件的保存目录追加到Python的系统路径中:

>>> import sys

>>> sys.path.append('c:/python')

l         这样就可以导入程序了(模块名即.py文件名):

>>> import hello

Hello, world!

l         如果修改了程序,再次导入,程序什么也没有做:

>>> import hello

>>> 

l         这是因为模块主要用来定义变量、函数和类,只导入一次。

l         要重新导入的方法是使用内建的reload()函数:

>>> hello = reload(hello)

Hello, world!

2)模块用来定义变量、函数和类

l         模块导入后,模块中定义的变量、函数和类可以作为模块的属性使用

# hello2.py

def hello():

         print "Hello, world!"

>>> import hello2

>>> hello2.hello()

Hello, world!

3)使你的模块有效

l         通常不会像前面的方法一样编辑sys.path,而是将模块目录放到系统默认的路径中:

>>> import sys, pprint

>>> pprint.pprint(sys.path)

['',

 'C://WINDOWS//system32//python24.zip',

 'D://workshop//Python24//DLLs',

 'D://workshop//Python24//lib',

 'D://workshop//Python24//lib//plat-win',

 'D://workshop//Python24//lib//lib-tk',

 'D://workshop//Python24//Lib//site-packages//pythonwin',

 'D://workshop//Python24',

 'D://workshop//Python24//lib//site-packages',

 'D://workshop//Python24//lib//site-packages//win32',

 'D://workshop//Python24//lib//site-packages//win32//lib']

l         site-packages目录通常是个不错的选择。

l         另外一种方法是将模块目录放到操作系统环境变量PYTHONPATH中。

l         UNIX的例子:

export PYTHONPATH=$PYTHONPATH:~/python

l         Windows的例子:

set PYTHONPATH=%PYTHONPATH%;C:/python

 

2包(package

1)包的结构:

l         模块保存到.py文件中;

l         包是目录,但其中必须包含__init__.py的模块;

l         模块文件保存在包目录中;

l         下面是个例子:

~/python/                          假设目录加到PYTHONPATH

~/python/drawing/                           包目录(drawing)

~/python/drawing/__init__.py       包目录下的代码(drawing模块)

~/python/drawing/colors.py         colors模块

~/python/drawing/shapes.py         shapes模块

l         下面的导入都是合法的:

import drawing                     # 导入drawing包,只有__init__模块有效

import drawing.colors              # 导入colors模块,使用全名drawing.colors访问

from drawing import shapes         # 导入shapes模块,使用短名shapes访问

 

3揭示模块内容

1)使用dir()函数

l         使用dir()函数揭示模块内容

>>> import copy

>>> [name for name in dir(copy) if name[0] != '_']

['Error', 'PyStringMap', 'copy', 'deepcopy', 'dispatch_table', 'error', 'inspect', 'name', 't']

2__all__变量

l         __all__变量用来定义模块的公共接口

>>> copy.__all__

['Error', 'copy', 'deepcopy']

l         当用下面的导入语句时,__all__变量设定的函数(变量或类)可以直接引用:

from copy import *

l         PyStringMap必须显式导入,才可以直接引用:

from copy import PyStringMap

l         在编写模块时,设置__all__变量通常是个有用的技巧

3)获得帮助信息

l         使用help()函数获得帮助信息

>>> help(copy.copy)

Help on function copy in module copy:

 

copy(x)

    Shallow copy operation on arbitrary Python objects.

   

    See the module's __doc__ string for more info.

l         文档字符串是写在函数(变量或类)的开始部分,用来文档化的,保存在__doc__属性中:

>>> print copy.copy.__doc__

Shallow copy operation on arbitrary Python objects.

 

    See the module's __doc__ string for more info.

4)查看源代码

l         使用模块的__file__属性,可以获得模块源代码所在的位置

>>> print copy.__file__

D:/workshop/Python24/lib/copy.pyc

l         .pyc文件是编译过的Python文件,在第一次导入模块时创建(和.py文件同一个目录);在后续导入时使用该文件,以提高Python的处理效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值