Flask 中的装饰器
发布时间:2023-06-29 14:07:55 所属栏目:教程 来源:
导读:总体来说,Python 的语法比较简单,是一门易学的编程语言。但是,Python 的装饰器语法是一个例外,装饰器是 Python 语言的高级语法,牵涉到高阶函数等内容,对初学者来说较难理解。
看到这里你可能会问:咱们这门
看到这里你可能会问:咱们这门
总体来说,Python 的语法比较简单,是一门易学的编程语言。但是,Python 的装饰器语法是一个例外,装饰器是 Python 语言的高级语法,牵涉到高阶函数等内容,对初学者来说较难理解。 看到这里你可能会问:咱们这门课程不是学习 Flask 框架吗?怎么又扯到装饰器上面去了? 这是因为装饰器语法在 Flask 框架中得到了广泛的应用,想要学好 Flask 框架不理解装饰器的概念是不行滴。 因此这个小节我们就专门来讨论下装饰器的用途、定义和原理,为大家深入理解 Flask 框架原理打下一个重要基础。 高阶函数 把函数当作对象 本节从底层原理讲解了如何实现装饰器,学员需要深入理解 Python 中 “函数是第一类对象” 的概念,可以参考词条 “Python 的 lambda 表达式”。在这个词条中对这一概念具有比较系统的讲解。 在 Python 中,函数是第一类对象的意思是指函数作为一个对象,与其它对象具有相同的地位。具体来说,一个数值对象可以: 被赋值给变量; 作为参数传递给函数; 作为返回值。 因为函数和数值具有相同的地位,所以函数也可以: 被赋值给变量; 作为参数传递给函数; 作为返回值。 1.2 把函数作为输入参数 上面说到函数也可以被作为参数传递给另外一个函数,下面我们就用一个例子来演示一下: def double(item): return item + item def triple(item): return item + item + item 定义函数 double,返回输入值的 2 倍;定义函数 triple,返回输入值的 3 倍。 def map(func, input): output = [] for item in input: new_item = func(item) output.append(new_item) return output 定义函数 map,接受两个参数:func 和 input。参数 func 是一个函数,参数 input 是一个列表, 对输入列表 input 中的每个元素依次进行处理,返回一个新列表 output。 在第 3 行,遍历输入列表 input 中的每个元素,调用 func (item) 生成一个新的元素 new_item,将 new_item 加入到 output 中,最后返回 output。 print(map(double, [, , ])) print(map(triple, [, , ])) 对序列 [1, 2, 3] 中的每个元素使用函数 double 进行处理;对序列 [1, 2, 3] 中的每个元素使用函数 triple 进行处理。 运行程序,输出如下: [2, 4, 6] [3, 6, 9] 序列 [1, 2, 3] 中的每个元素乘以 2 后,得到序列 [2, 4, 6];序列 [1, 2, 3] 中的每个元素乘以 3 后,得到序列 [3, 6, 9]。 1.3 把函数作为返回值 在下面的例子中,将函数作为返回值: def func(): print('Inside func') def return_func(): print('Inside return_func') return func 在第 1 行,定义函数 func;在第 3 行,定义函数 return_func,函数 return_func 返回一个函数类型的对象,将函数 func 作为值返回。 var = return_func() var() 调用 return_func (),将函数的返回值保存到变量 var。变量 var 的类型是函数,因此可以进行函数调用。 程序的输出结果如下: Inside return_func Inside func (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |