# -*- coding: UTF-8 -*-
# 模块化思维的前提:
# 实现一个功能有很多步骤,我们尽可能不一蹴而就,而是分模块开发
# 既然要层层分解,写函数的时候,最好就不要让单一的函数过于复杂
# 一个函数仅实现一个小功能,只返回一个结果为上佳
# 对函数装饰器的理解:
# 函数的装饰器其实是函数模块化思维的一种体现
# 装饰器可以翻译成‘外包装’,层层包裹里面的东西,类似洋葱
# 在每一层我们都可以加入一些元素,以最简单的print为例
# 突然感觉用装饰器嵌套装饰器可以完美印出一首诗,逻辑很简单
# 包装7层,每个装饰器读两头,最后拼接成完整一首诗。
# 函数读取内容
def reader(filename):
line_list = []
f = open(filename)
for eachline in f:
line_list.append(eachline)
return line_list
# 运行013,这里是装饰器最深处
def line0_13(func):
def wrapper(line_list):
print(line_list[0])
func(line_list)
print(line_list[13])
return wrapper
# 运行112,切013
def line1_12(func):
@line0_13
def wrapper(line_list):
print(line_list[1])
func(line_list)
print(line_list[12])
return wrapper
# 运行211,切112
def line2_11(func):
@line1_12
def wrapper(line_list):
print(line_list[2])
func(line_list)
print(line_list[11])
return wrapper
# 运行310,切211
def line3_10(func):
@line2_11
def wrapper(line_list):
print(line_list[3])
func(line_list)
print(line_list[10])
return wrapper
# 运行49,切310
def line4_9(func):
@line3_10
def wrapper(line_list):
print(line_list[4])
func(line_list)
print(line_list[9])
return wrapper
# 运行58,切到49
def line5_8(func):
@line4_9
def wrapper(line_list):
print(line_list[5])
func(line_list)
print(line_list[8])
return wrapper
# read_start开始读取,切装饰器58
@line5_8
def read_start(line_list):
print(line_list[6])
print(line_list[7])
filename = raw_input('请输入秘密文档(例:D://secret.txt):')
line_list = reader(filename)
read_start(line_list)
# 请输入秘密文档(例:D://secret.txt):D://secret.txt
# #
# 输出结果:
#
# 《春》---穆旦
#
# 绿色的火焰在草上摇曳,
#
# 他渴求着拥抱你,花朵。
#
# 反抗着土地,花朵伸出来,
#
# 当暖风吹来烦恼,或者欢乐。
#
# 如果你是醒了,推开窗子,
#
# 看这满园的欲望多么美丽。
#
# 蓝天下,为永远的谜蛊惑着的
#
# 是我们二十岁的紧闭的肉体,
#
# 一如那泥土做成的鸟的歌,
#
# 你们被点燃,卷曲又卷曲,却无处归依。
#
# 呵,光,影,声,色,都已经赤裸,
#
# 痛苦着,等待伸入新的组合。
#
# -----------写于1942年
# 穆旦诗有一种跳跃的美