1.模块的使用:
#!/usr/bin/env python #可以让这个hello.py文件直接在Unix/Linux/Mac上运行
# -*- coding: utf-8 -*- #表示.py文件本身使用标准UTF-8编码
' a test module ' #模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释
__author__ = 'Michael Liao' #使用__author__变量写入作者
import sys #导入sys模块
def test():
args = sys.argv #sys模块下面的argv变量,该变量用list存储了命令行的所有参数,并且至少有一个元素,因为第一个参数永远是该.py文件的名称
if len(args)==1:
print 'Hello, world!'
elif len(args)==2:
print 'Hello, %s!' % args[1] #如果列表的长度是2,输出hello+第二个数
else:
print 'Too many arguments!'
if __name__=='__main__': #这种if测试可以让一个模块通过命令行运行时执行一些额外的代码,最常见的就是运行测试。在这里,Python解释器把一个特殊变量 __name__ 置为 __main__ ,而如果在其他地方导入该 hello 模块时, if 判断将失败
test()
2.别名:import A as B ,把B指定为A的别名。比如import cStringIO as StringIO,Python标准库一般会提供 StringIO 和 cStringIO 两个库,这两个库的接口和功能是一样的,但是 cStringIO 是C写的,速度更快。这样写,就可优先导入 cStringIO 。若有些平台不提供 cStringIO ,还可以降级使用 StringIO,使后续代码引用StringIO可正常工作。
3.作用域:
一、正常的函数和变量名是公开的(public)
二、类似__xxx__这样的变量是特殊变量,可直接引用,但有特殊用途,如__author__,__name__,__doc__等
三、_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用
例如:
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,只有外部需要引用的函数才定义为public。
4.搜索模块路径:import sys\sys.path。若要修改sys.path,一可以用sys.path.append('/User/michael/my_py_scripts')的形式修改,二可以去设置环境变量PYTHONPATH
5.安装第三方库,例如:在命令提示符窗口下运行pip install PIL就是安装处理图像的工具库。PIL(Python Imaging Library)
6.__future__模块,把下一版本的新特性导入到当前版本,于是我们就可以在当前版本中测试一些新版本的特性。应用from __future__ import unicode_literals语句来在2.7版本中使用3.x版本的新的字符串的表示方法。应用from __future__ import division语句来在2.7版本中直接使用3.x版本的除法特性。