如果你想要在其他程序中重用很多函数,可以使用模块。模块基本上就是一个包含了所有你定义的函数和变量的文件。为了在其他程序中重用模块,模块的文件名必须以.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 '%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
阅读(1092) | 评论(0) | 转发(0) |