用户名: 密码: 忘记密码? 注册

python模块

作者:  时间: 2010-09-09
    如果你想要在其他程序中重用很多函数,可以使用模块。模块基本上就是一个包含了所有你定义的函数和变量的文件。为了在其他程序中重用模块,模块的文件名必须以.py为扩展名。
    模块可以从其他程序输入以便利用它的功能。这也是我们使用Python标准库的方法。首先,我们将学习如何使用标准库模块。

1.使用sys模块
例 使用sys模块
#!/usr/bin/python
# Filename: using_sys.py
import sys
print 'The command line arguments are:'
for i in sys.argv:
  print i
print '\n\nThe PYTHONPATH is', sys.path, '\n'

输出
$ python using_sys.py we are arguments
The command line arguments are:
using_sys.py
we
are
arguments

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

3.模块的__name__
    每个模块都有一个名称,在模块中可以通过语句来找出模块的名称。这在一个场合特别有用——就如前面所提到的,当一个模块被第一次输入的时候,这个模块的主块将被运行。假如我们只想在程序本身被使用的时候运行主块,而在它被别的模块输入的时候不运行主块,我们该怎么做呢?这可以通过模块的__name__属性完成。(感觉和dll文件中的dllmain函数类似,但区别还是很大的)

使用模块的__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 using_name.py
This program is being run by itself
$ python
>>> import using_name
I am being imported from another module
>>>

    模块的用处在于它能为你在别的程序中重用它提供的服务和功能。Python附带的标准库就是这样一组模块的例子。我们已经学习了如何使用这些模块以及如何创造我们自己的模块。
   
    至此,python的扫盲篇就完成了,那就让我们动手写出第一个实用的python程序吧!!!
    问题:写一个程序,输出素数,可以指定范围,如输出100到1000之间的素数。
    程序代码:

#!/usr/bin/python
#filename:prime.py

import math
import sys

def isprime(a):
    """judge the number is wether prime or not

    is prime,then return 1"""
    for k in range(2,(int)(math.sqrt(a)+1)):
        if a%k == 0:
            return 0
    return 1

if len(sys.argv) < 3:
    print 'no arguement\nusage:%s <number> <number>'%sys.argv[0]
    quit()
start = int(sys.argv[1])
end = int(sys.argv[2])
for i in range(start,end):
    if isprime(i):
        print i

print 'done'

    代码很简单,就不用我描述了吧。直接运行吧,输出一百万到一百万零一百之间的素数:
[root@localhost python]# python prime.py 1000000 1000100
1000003
1000033
1000037
1000039
1000081
1000099
done
    注:由于python本身有数据类型的管理,所以这里不用害怕会出现溢出的情况。
来个狠点的:
[root@localhost python]# python prime.py 1000000000000 1000000000100
1000000000039
1000000000061
1000000000063
1000000000091
done