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的主要内容,如果未能解决你的问题,请参考以下文章

vs 2010代码片段

vs 2010代码片段

1 代码片段1

sublime text3 增加代码片段(snipper)

web代码片段

JavaScript单行代码,也就是代码片段