模块可以从其他程序输入,从而利用它的功能,python
的标准库也是这个用法,这节学习如何使用标准库模块。
使用sys
模块
import sys
print 'The command line arguments are:'
for i in sys.argv:
print i
print '\n\nThe PYTHONPATH is', sys.path, '\n'
运行结果:
The command line arguments are:
using_sys.py
we
are
arguments
The PYTHONPATH is ['/home/swaroop/byte/code',
'/usr/lib/python23.zip',
'/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2',
'/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload',
'/usr/lib/python2.3/site-packages',
'/usr/lib/python2.3/site-packages/gtk-2.0']
当
Python
执行import sys
语句的时候,它在sys.path
变量中所列目录中寻找sys.py
模块。如果找到了这个文件,这个模块的主块中的语句将被运行,然后这个模块将能够被你 使用 。注意,初始化过程仅在我们 第一次 输入模块的时候进行。另外,“sys
”是“system
”的缩写。sys
模块中的argv
变量通过使用点号指明——sys.argv
——这种方法的一个优势是这个名称不会与任何在你的程序中使用的argv
变量冲突。另外,它也清晰地表明了这个名称是sys
模块的一部分。
from...import
语句
书中的内容精炼明确,我没什么可说的,为了以后看的时候理解起来完整又方便,就把书中的内容拷贝过来了。
如果你想要直接输入
argv
变量到你的程序中(避免在每次使用它时打sys
. ),那么你可以使用from sys import argv
语句。如果你想要输入所有sys
模块使用的名字,那么你可以使用from sys import *
语句。这对于所有模块都适用。一般说来,应该避免使用from..import
而使用import
语句,因为这样可以使你的程序更加易读,也可以避免名称的冲突。
模块的__name__
这部分内容我可以理解,但是说不清楚是怎么回事,看代码可以看懂,但是让我清晰的说明整个过程还是有些困难。
每个模块都有一个名称,在模块中可以通过语句来找出模块的名称。这在一个场合特别有用——就如前面所提到的,当一个模块被第一次输入的时候,这个模块的主块将被运行。假如我们只想在程序本身被使用的时候运行主块,而在它被别的模块输入的时候不运行主块,我们该怎么做呢?这可以通过模块的
__name__
属性完成。
if __name__ == '__main__':
print 'This program is being run by itself'
else:
print 'I am being imported from another module'
运行结果:
This program is being run by itself
>>> import using_name
I am being imported from another module
现在看到这段代码,我的理解是:让脚本自己运行就打印This program is being run by itself
,如果是在某个脚本中调用这个“模块”,那么就打印I am being imported from another module
。不知道这样理解对不对,希望在今后的学习中,可以真正理解这段代码的含义。
制造你自己的模块
还是那句老话,这本书不光讲的内容详细到位,而且这些代码真的很典型,读起来容易理解,方便使用。
# Filename: mymodule.py
def sayhi():
print 'Hi, this is mymodule speaking.'
version = '0.1'
然后在另一个脚本中使用上边自己写的模块。
import mymodule
mymodule.sayhi()
print 'Version', mymodule.version
运行结果:
Hi, this is mymodule speaking.
Version 0.1
我们也可以利用from...import
调用自己写好的模块。
from mymodule import sayhi, version
# from mymodule import *
sayhi()
print 'Version', version
运行结果都是一样的。
dir()
函数
你可以使用内建的
dir
函数来列出模块定义的标识符。标识符有函数、类和变量。当你为
dir()
提供一个模块名的时候,它返回模块定义的名称列表。如果不提供参数,它返回当前模块中定义的名称列表。
在python
的交互界面操作:
在os
模块下使用dir()
我们很清楚的看到它包含了一个巨大的属性列表。