用函数装饰一首诗

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

用函数装饰一首诗的相关文章

Python高阶函数与函数装饰器-day4

上节回顾 高阶函数 闭包函数 函数装饰器 模块导入 一.上节回顾 Python2与Python3字符编码问题,不管你是初学者还是已经对Python的项目了如指掌了,都会犯一些编码上面的错误.我在这里简单归纳Python3和Python2各自的区别. 首先是Python3-->代码文件都是用utf-8来解释的.将代码和文件读到内存中就变成了Unicode,这也就是为什么Python只有encode没有decode了,因为内存中都将字符编码变成了Unicode,而Unicode是万国码,可以"

函数嵌套 ,名称空间与作用域 ,闭包函数 ,装饰器 ,迭代器, 生成器 三元表达式,列表解析,生成器表达式 递归与二分法, 内置函数

函数嵌套名称空间与作用域闭包函数装饰器迭代器生成器三元表达式,列表解析,生成器表达式递归与二分法内置函数--------------------------------------------函数的嵌套调用:在调用一个函数的过程中,又调用了其他函数函数的嵌套定义:在一个函数的内部,又定义另外一个函数def max(x,y): if x>y: return x else: return ydef max1(a,b,c,d): res=max(a,b) res2=max(res,c) res3=ma

Python 函数对象 命名空间与作用域 闭包函数 装饰器 迭代器 内置函数

一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(First-Class Object)呢? 在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量.可以作为元素添加到集合对象中.可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的. 1.函数身为一个对象,拥有对象模型的三个通用属性:id.类型.和值.

python函数装饰器

学习装饰器前提需要了解高阶函数,函数嵌套,函数闭包 python函数装饰器,顾名思义就是装饰函数,为函数添加新功能的的一种方式. 为什么要使用装饰器呢? 因为函数在运行时,如果不使用装饰器对函数进行功能添加,需要修改函数源代码,这样修改无疑会增加程序的冗余和复杂性,也不便于程序员对其进行修改.使用装饰器,可以在不改变函数源代码和调用方式的前提下,使用语法糖@装饰器,对函数功能进行添加. 装饰器本质上就是一个函数. 我们使用一个简单的例子来实现: import time #这是一个装饰器函数名为t

Go编程——变量、函数导出与首字母大写

Go编程--变量.函数导出与首字母大写 标识符可被 导出 以允许从另一个包访问. 同时符合以下条件即为已导出标识 1.标识符名的第一个字符为Unicode大写字母(Unicode类别"Lu"): 2.该标识符在包块中已声明或为字段名或方法名. 以程序导入gotest/even包为例 package main import ( "even" "fmt" ) func main() { i:=even.I fmt.Printf("Is %d

MyPython-->进阶篇-->匿名函数 装饰器

当我们在传入函数时,有些时候,不需要显示地定义函数,直接传入匿名函数更方便 匿名函数 lambda x :x+x  实际就是 def s(x): return x+x 关键字 lambda 表示匿名函数,冒号前面的x表示 函数的参数 匿名函数有一个限制,就是只能有一个表达式,不用写return ,返回值就是该 表达式的结果 匿名函数没有名字,不必担心函数名冲突 也可以赋值给变量  在调用,也可以返回一个匿名函数 装饰器 在函数调用前后自动打印日志,但又不希望修改now()函数的定义,这种在代码运

Python 函数装饰器入门

原文链接: --> A guide to Python's function decorators Python功能强劲,语法表现力强,尤其装饰器深深的吸引着我.在设计模式中,装饰器可以在不使用子类的情况下,动态的改变函数,方法以及类的功能.这个功能非常有用,特别在你想扩展函数的功能同时又不想改变原有的函数.的确,我们任意的实现装饰器设计模式,但是,python通过提供简单的语法和特性让装饰器的实现变的如此简单. 在本文中,我将用一组例子来深入浅入python 函数装饰器的功能,所有的例子都是在

写给独立开发兄弟共勉-寂寞是19首诗和2首悲歌

昨晚又失眠了,这个过程却是太恼火.但上了贼船怎么能说退就退,太不爷们,哈哈哈.希望和我一样境遇的兄弟能共勉. 我不怕寂寞,怕年华虚度,空有一身疲倦. 但我怕寂寞,怕远方除了遥远一无所有. 我想为寂寞写19首诗. .... 第一首诗,我写给自己,因为是我默认了寂寞. 第二首诗,我写给昼夜,因为时间延长了寂寞. 第三首诗,我写给我的卧室,因为这里允许了寂寞的发生. 第四首诗,我写给我的猫,因为它在不停提醒我. 第五首诗,我写给周末,因为周末其他人都在恋爱. 第六首诗,我写给电影院,因为选号只允许连座

【Python 函数对象 命名空间与作用域 闭包函数 装饰器 迭代器 内置函数】

一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(First-Class Object)呢? 在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量.可以作为元素添加到集合对象中.可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的. 1.函数身为一个对象,拥有对象模型的三个通用属性:id.类型.和值.