码迷,mamicode.com
首页 > 其他好文 > 详细

M1-Flask-Day1

时间:2018-04-16 12:07:29      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:函数返回值   elf   方法   cal   源码   配置   return   def   加载   

前情概要

   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

标签:函数返回值   elf   方法   cal   源码   配置   return   def   加载   

原文地址:https://www.cnblogs.com/liujiliang/p/8854932.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!