高级抽象
-
模块的概念
单个的.py 文件是一个模块,python自带的标准库,约200个
其他的模块被称为第三方模块
-
导入模块
import module
import linecache
help(linecache) #查看帮助文档,返回文档地址,包含方法
dir() 模块包含的方法
查看模块位置from module import method
from linecache import *
==小心方法名称不要重复==__all__=["getline", "clearline", "check cache"] *声明里面的可以被调用, 导入只可用声明的方法
def test(): return "hello world" if __name__ == "__main__": #用于测试,当前文件执行时会运行但是当别的文件调用是不运行 print test()
如果新建文件mm.py ,调用上面的文件
import abc
直接执行时不会报错,
加上代码
abc.test()
,执行代码可以输出hello world当以上abc文件代码==去掉==
if __name__ == "main:" print test()
时,执行mm.py 会直接输出hello world
pyc文件无法看到源代码
-
模块包的创建
创建文件夹,即为包的名称 myfirst
-
创建文件m1.py,编写代码
#-*-coding=ctf-8 def get_info(): return "m1 module --> get_info()." if __name__ =="__main__": print get_info()
执行代码,
-
当前文件夹创建文件m2.py
#-*-coding=ctf-8 import m1 print m1.get_info()
调用可执行
-
在myfirst 同一级别下创建文件test.py
#-*coding=utf-8 import myfirst
执行文件出错,找不到模块.
此时myfirst还不属于包,还需要在模块包下创建一个__init__.py 文件
此时可以调用
-
在test.py 文件下加入代码
print myfirst.m1
执行代码出错,显示当前模块没有m1属性可以这样导入
import myfirst.m1
代码print myfirst.m1
可以执行
也可以这样
#-*coding=utf-8 import myfirst.m1 as a print a
或者
#-*coding=utf-8 from myfist import m1 print m1
-
调用get_info()方法
加入代码
print m1.get_info()
可执行
-
更加简化,直接导入方法
#-*coding=utf-8 from myfist.m1 import get_info() print get_info()
-
测试导入所有方法
from myfirst import *
print m1
报错
需要将init文件进行声明
__all__ =["m1"]
即可使用
import first.m1 as a
from myfirst.m1 import get_info()
搜索模块
需要导入模块
import sys
sys.path.append(模块包路径)
常用模块
模块和详细的帮助文档 pypi.python.org
-
如何选择
首先选择标准库中的模块,address
-
常用模块
-
urllib,urllib2 网络抓取
查看帮助文档*
help(urllib)
f = url lib.urlopen("url")
import urllib params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0}) f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query?%s" % params) print f.read()
-
time, datetime 时间
from datetime import time, tzinfo class GMT1(tzinfo): def utcoffset(self, dt): return timedelta(hours=1) def dst(self, dt): return timedelta(0) def tzname(self,dt): return "Europe/Prague" t = time(12, 10, 30, tzinfo=GMT1()) t gmt = GMT1() t.isoformat() t.dst() t.tzname() t.strftime("%H:%M:%S %Z") 'The {} is {:%H:%M}.'.format("time", t)
os, sys 系统
-
pickle 对象持久化
import pickle data1 = {'a': [1, 2.0, 3, 4+6j], 'b': ('string', u'Unicode string'), 'c': None} selfref_list = [1, 2, 3] selfref_list.append(selfref_list) output = open('data.pkl', 'wb') # Pickle dictionary using protocol 0. pickle.dump(data1, output) # Pickle the list using the highest protocol available. pickle.dump(selfref_list, output, -1) output.close()
-
logging
-
re 正则表达式
import re m = re.search('(?<=abc)def', 'abcdef') m.group(0) 'def'
random 随机
dir(),help(),__file__
-