Day-7: 模块知识
Python中,一个.py文件就是一个模块(module);而,包含了多个模块的一个目录,称为包。
每一个包中,都包含一个_init_.py文件,可以是一个空文件,这是Python将普通目录识别为包的特征点。
模块的文件名是directory.module,前面是包含该模块的包的名字,后面是该模块的名字,例如:
文件www.py
的模块名就是mycompany.web.www
,两个文件utils.py
的模块名分别是mycompany.utils
和mycompany.web.utils
。
- 使用模块
导入模块:
1.import sys
2.import cStringIO as StringIO,导入模块同时另命名。配合错误检查功能,可以保证运行环境选择最合适的模块,使程序具有更强的鲁棒性。
try: import cStringIO as StringIO except ImportError: # 导入失败会捕获到ImportError import StringIO
- 作用域
正常的函数和变量名是公开的(public),可以被直接引用,比如:abc
,x123
,PI
等;类似__xxx__
这样的变量是特殊变量,可以被直接引用,但是有特殊用途,__author__显示作者,__name__显示函数名字,__doc__显示文档字符串;类似_xxx
和__xxx
这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc
,__abc
等;
def _private_1(name): return 'Hello, %s' % name def _private_2(name): return 'Hi, %s' % name def greeting(name): if len(name) > 3: return _private_1(name) else: return _private_2(name)
像_private_2这种私有函数,由于外部调用时,用不到,所以用私有函数隐藏起来。
- 安装第三方模块
shell命令行输入:pip install moudule_name,会依据你输入的模块名搜索官网pypi.python.org上的该模块。
另外,由于官网上模块对应的电脑位数不同,可能无法使用,可以先到国内的非官方库中下载相应的模块,放入C:\Python27\Scripts中后,命令行运行pip install ****,就可以了。
- __future__模块
对于旧版本的代码在新版本中维护时,一次性换到新版本中,可能会一次性产生许多错误,不便调试,使用__future__模块后,可以慢慢地针对新版本改进点进行修改。
# still running on Python 2.7 from __future__ import unicode_literals print '\'xxx\' is unicode?', isinstance('xxx', unicode) print 'u\'xxx\' is unicode?', isinstance(u'xxx', unicode) print '\'xxx\' is str?', isinstance('xxx', str) print 'b\'xxx\' is str?', isinstance(b'xxx', str)
注:本文为学习廖雪峰Python入门整理后的笔记