# -*- 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年 # 穆旦诗有一种跳跃的美
时间: 2024-10-08 02:02:31