首页 > 代码库 > 用函数装饰一首诗

用函数装饰一首诗

# -*- 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年

# 穆旦诗有一种跳跃的美

 

用函数装饰一首诗