Python基础教程中‘即时标记’案例的应用
一、‘即时标记’的应用
所谓‘即时标记’,就是根据已知的文本文件,得到html文件(本案例)
简单的方式:
1、对文本文件进行解析,再对此内容进行迭代输出;
2、对以空格为基础,对内容进行html相应标签的输出,从而得到html文件。
复杂的方式:(带有重构代码性)
1、对html中的规则进行界定;(如标题、格式、段落等相应标签的规定;)为handler类(处理器,以此为基础);为handler.py;
2、文本文件;(对文本文件进行迭代处理)为util.py;
3、根据html中的具体应用,规则方法进行调用,(本文利用方法名称的通用型,以继承方法实现该方法的调用);为rule.py中
4、对文本文件进行规则与过滤器(正则式)的限定和解释,转换为html文件。
二、结构图思想
handler:htm的底层规则;
Rules:titleRules、headRules、paraRules等;(调用handler)
util:解析文本文件;
makeup:根据util内容,以Rules规则得到的相应html格式,进行内容输出。
(源码路径为:链接: http://pan.baidu.com/s/1sj04P1V 密码: ypbz)
三、相关的属性及方法解释
yield:生成器,目的用于迭代。
例1:
def g(n):
for i in range(n):
yield i**2
for i in g(3):
print i,":",
t=g(3)
print t
print t.next()
print t.next()
print t.next()
输出:0,1,4::
例2:
def fab(max):
a,b=0,1
while a<max:
yield a
a,b=b,a+b
for i in fab(3):
print i,",",
yield类似于迭代器,原理上是通过next()访问的。
理解:通过参数获取到的值,以列表形式一次返回。
与List形式对比:
例3:
deffab(
max
):
n, a, b
=
0
,
0
,
1
L
=
[]
whilen <
max
:
L.append(b)
a, b
=
b, a
+
b
n
=
n
+
1
returnL
通过List访问会造成占用的内存随着max的增大而增大,为了控制内存占用,最好不要用List.