zoukankan      html  css  js  c++  java
  • 用函数装饰一首诗

    # -*- 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年
    
    # 穆旦诗有一种跳跃的美
  • 相关阅读:
    模板引擎
    MongoDB基础操作
    node异步编程
    关于bootstrap table 的可编辑列表的实例
    weblogic 补丁步骤
    BIZ中model.getSql源码分析
    windows切换 jdk的坑!!!
    Oracle 给予访问其他用户包的权限
    关于解决Tomcat服务器Connection reset by peer 导致的宕机
    查找多余逗号的正则表达式
  • 原文地址:https://www.cnblogs.com/themost/p/7222152.html
Copyright © 2011-2022 走看看