10.模块
a.模块的使用
我们使用import …来导入一个模块,也可以使用from … import …来导入一个模块中指定的某些成员。例如,我们来导入一个标准模块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
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']
其中We are arguments是参数。通过sys.argv可以看到,第一个参数sys.argv[0]是’using_sys.py’,永远是文件名。后面的’we’是sys.argv[1]、’are’是sys.argv[2]以及’arguments’是sys.argv[3].调用一个模块就是从指定的路径(环境变量)中寻找该模块。
b.模块的__name__
对于每一个模块,都有一个自己的__name__。当一个py文件被执行的时候,也可以把这个文件看作一个模块,有它自己的__name__。如果它是’main‘,这说明这个模块被用户单独运行;如果是被调用的话,则它是该模块名。
#!/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
>>>
这样的话我们可以在if __name__ == ‘__main__’:里添加代码用于测试这个模块(或者说程序),这个时候,if __name__ == ‘__main__’的作用就和main函数一样了。
c.创建自己的模块
创建自己的模块很简单!确保它具有.py扩展名,然后把它放到和执行程序一样的路径中(或ys.path所列目录之一)即可。注意,模块里的变量在外部调用时,要用’模块名.变量名‘来使用。
#!/usr/bin/python
# Filename: mymodule.py
def sayhi():
print 'Hi, this is mymodule speaking.'
version = '0.1'
# End of mymodule.py
#!/usr/bin/python
# Filename: mymodule_demo.py
import mymodule
mymodule.sayhi()
print 'Version', mymodule.version
输出:
$ python mymodule_demo.py
Hi, this is mymodule speaking.
Version 0.1