M1-Flask-Day1
Posted dragonliu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了M1-Flask-Day1相关的知识,希望对你有一定的参考价值。
前情概要
1.flask的基本使用
- 配置
- 路由
- 视图
- 请求与响应相关
- 模板
2.flask基于装饰器实现的路由
- 基本操作
- functools
- 带参数的装饰器
- 源码剖析
3.flask-基于源码剖析session&特殊装饰器原理
一.历史回顾
1.装饰器原理
def wapper(func): def inner(*args,**kwargs): print("执行装饰器逻辑") return func(*args,**kwargs) return inner """
在程序执行从上到下加载,还未执行的时候 先执行如下两个步骤 1. 立即执行wapper函数,并将下面装饰的函数当做参数传递 2. 将wapper函数返回值获取,在index赋值 index = inner函数 """ @wapper def index(): print(‘函数内容‘) # 实际执行的 inner函数,inner函数内部调用原函数 index()
2.functools
import functools def wapper(func): @functools.wraps(func) def inner(*args,**kwargs): return func(*args,**kwargs) return inner @wapper def index(): print(‘index‘) @wapper def order(): print("order") """ 默认不加functools会直接返回当前函数装饰器里inner的函数名字 """ print(index.__name__) print(order.__name__) """ 返回值 index order """
3.面向对象封装
""" 面向对象封装 """ #将一些变量封装到一个类里进行统一调用 class Foo(object): def __init__(self,age,name): self.age = age self.name = name def get_info(self): return self.name,self.age def __call__(self, *args, **kwargs): return self.name class Bar(object): def __init__(self,counter): self.counter = counter self.obj = Foo(‘18‘,‘guest‘) #这个也算是面向对象的组合,将用户封装到一个类里 b1 = Bar(1) print(b1.obj.get_info()) print(b1.obj()) #对象加()执行对象所在类的__call__方法
以上是关于M1-Flask-Day1的主要内容,如果未能解决你的问题,请参考以下文章