Python 学习手记 pt5 模块

       如果你想要在其他程序中重用很多函数,那么你该如何编写程序呢?你可能已经猜到了,答案是使用模块。模块基本上就是一个包含了所有你定义的函数和变量的文件。为了在其他程序中重用模块,模块的文件名必须以.py为扩展名。
        模块可以从其他程序 输入 以便利用它的功能。这也是我们使用Python标准库的方法。

        首先,我们利用import语句 输入 sys模块。基本上,这句语句告诉Python,我们想要使用这个模块。sys模块包含了与Python解释器和它的环境有关的函数。当Python执行import sys语句的时候,它在sys.path变量中所列目录中寻找sys.py模块。如果找到了这个文件,这个模块的主块中的语句将被运行,然后这个模块将能够被你 使用 。sys.argv包含了
命令行参数 的列表,即使用命令行传递给你的程序的参数。

 

字节编译的.pyc文件
       输入一个模块相对来说是一个比较费时的事情,所以Python做了一些技巧,以便使输入模块更加快一些。一种方法是创建 字节编译的文件 ,这些文件以.pyc作为扩展名。字节编译的文件与Python变换程序的中间状态有关. 当你在下次从别的程序输入这个模块的时候,.pyc文件是十分有用的——它会快得多,因为一部分输入模块所需的处理已经完成了。另外,这些字节编译的文件也是与平台无关的。所以,现在你知道了那
些.pyc文件事实上是什么了。

 

from..import语句
         如果你想要直接输入argv变量到你的程序中(避免在每次使用它时打sys.),那么你可以使用from sys import argv语句。如果你想要输入所有sys模块使用的名字,那么你可以使用from sys import *语句。这对于所有模块都适用。一般说来,应该避免使用from..import而使用import语句,因为这样可以使你的程序更加易读,也可以避免名称的冲突。

 

模块的__name__
        每个模块都有一个名称,在模块中可以通过语句来找出模块的名称。这在一个场合特别有用——就如前面所提到的,当一个模块被第一次输入的时候,这个模块的主块将被运行。假如我们只想在程序本身被使用的时候运行主块,而在它被别的模块输入的时候不运行主块,我们该怎么做呢?这可以通过模块的__name__属性完成。

例 : 使用模块的__name__

#!/usr/bin/python
# Filename: using_name.py
if __name__ == '__main__':
print 'This program is being run by itself'
else:
print 'I am being imported from another module'
 

每个Python模块都有它的__name__,如果它是'__main__',这说明这个模块被用户单独运行,我们可以进行相应的恰当操作。

 

创建自己的模块:

       这个有些类似于java的生存的.class文件.只不过Python直接的用.py文件来做模块. 每次使用的时候就只要 import modulaName

#!Mudola.py

def HelloWorld():
    print 'Hello World!'
#end of HelloWorld..

s = 'i\'m a string'    



#testImportMudola.py

import Mudola

Mudola.HelloWorld()

print Mudola.s

输出:

Hello World!
i'm a string

 

dir()函数:

你可以使用内建的dir函数来列出模块定义的标识符。标识符有函数、类和变量。当你为dir()提供一个模块名的时候,它返回模块定义的名称列表。如果不提供参数,它返回当前模块中定义的名称列表.

dir(Mudola)[上例中的]

输出: ['HelloWorld', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 's']

 

 

其实,Python附带的标准库就是这样一组模块的例子.同c等的类库一样.

posted on 2010-08-12 16:51  amojry  阅读(431)  评论(0编辑  收藏  举报