[Python笔记]Python学习笔记四
模块
在Python中,一个.py文件就是一个模块(Module)
使用模块的好处就是大大提高代码的可维护性,并且可以被其他地方引用。
同时可以避免函数名和变量名的冲突。
Package(包) 每个包目录下面必须有一个 __init__.py文件
这个文件可以是空的,这个文件对应模块名就是当前目录名即包名
模块的使用
Python内置了很多模块
#!/usr/bin/env python # -*- coding:utf-8 -*- # 编写一个属于自己的模块
# 文件的第一个字符串被视为模块的文档注释 'a test module'
# 模块作者
__author__ = 'JoyJoe' import sys def test():
# sys.argv使用列表来存储命令行的所有参数,第一个元素永远都是文件名 args = sys.argv if len(args) == 1: print 'Hello world!' elif len(args)==2: print 'Hello, %s'%args[1] else: print 'Too many arguments!'
# 在命令行运行文件时,Python解释器会把变量__name__置为 __main__
# 这样如果在其他地方导入该模块时if判断将会失败
# 一般用于运行测试 if __name__ == '__main__': test()
导入模块时可以设置别名
try: import cStringIO as StringIO except ImportError: import StringIO
try: import json except ImportError: import simplejson as json
作用域
在Python中,规定__xxx__这样的变量为特殊变量,如__name__, __author__, __doc__等
Python同样在类或模块中没有函数访问权限修饰符
第三方模块安装
使用官方推荐的pip 也可以使用easy_install
Python非常强大的一个处理图像的工具库Python Imaging Library (在官网上注册名PIL)
pip install PIL
import Image im = Image.open('test.png') print im.format, im.size, im.mode im.thumbnail((200, 100)) im.save('thumb.jpg', 'JPEG')
常用第三方库:
MySQL-python
numpy
Jinja2
模块的加载过程:Python解释器会搜索当前目录下所有已经安装的内置模块和第三方模块,搜索路径存放在sys模块的path变量中
import sys print sys.path
Python提供了 __future__ 模块,把下一个新版本的特性导入到当前版本中
为了适应Python3.x中的字符串表示方法,在Py2.7中通过unicode_literals来使用新语法
# still running on Python2.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)
Python3中, 所有字符都视为unicode 如果需要使用二进制字符串则必须添加前缀b
Python3中,所有除法都是精确除法
from __future__ import division