生成器,装饰器之类

前期知识点回顾

内容回顾
1、可迭代对象、迭代器、生成器、装饰器有什么区别?
  可迭代对象:内部实现了__iter__方法,是一个迭代器
  迭代器:内部实现了__iter__和__next__方法,可以进行for循环
  生成器:函数内部有yield的就是生成器,生成器也有一个__next__方法,它的本质是一个迭代器。
  生成器有两大功能:1、生成 2、迭代
  装饰器:在函数执行之前或者函数执行之后要扩展的功能,装饰器是用闭包实现的
2、面向对象的方法?面向对象有三种方法:
  实例方法:def func(self):pass 用对象去调用方法
  类方法:cls是当前操作的类名
      @classmethod
      def func(cls):pass
  静态方法:
      @staticmethod
      def func():pass
  类方法和静态方法的区别:
    类方法:类方法传一个cls参数
    静态方法:静态方法不用传参数
    相同点:都可以用用类去调用方法
3、类里面的字段有两种:
    静态字段
    动态字段
    class A:
      s ="aaa" 静态字段
      def __init__(self):
        self.name = name 对象字段
4、属性:

@property
def func(self):
  pass
@fee.setter
def fee(self):
  pass

@fee.deltter
def fee(self):
  pass
吧一个方法当做属性来调用
因为属性不能被修改,可以用@fee.setter 

5、提高查询数据库性能相关的有什么方式?
  加索引的方式:索引就是加速查询 :通过不断的缩小数据的范围筛选出最终想要的结果
  索引又分为几大类?
  索引分类
    1.普通索引index :加速查找
    2.唯一索引
      主键索引:primary key :加速查找+约束(不为空且唯一)
      唯一索引:unique:加速查找+约束 (唯一)
    3.联合索引
      -primary key(id,name):联合主键索引
      -unique(id,name):联合唯一索引
      -index(id,name):联合普通索引
    4.全文索引fulltext :用于搜索很长一篇文章的时候,效果最好。
    5.空间索引spatial :了解就好,几乎不用
6、如何命中索引?
  创建索引,未命中
  命中:相当于精确查询。。。in,like就不命中
  排序条件为索引,则select字段必须也是索引字段,否则无法命中

6、django的生命周期
  请求先到wsgi---中间件---如果验证通过就走到路由系统----视图函数(从数据库中取到数据,在模板中渲染)
7、中间件做过什么?
  用户登录
  权限管理
  crsf
  session
8、在路由系统url上一定要记得加上起始终止符
9、视图:request请求都拿到了些什么?
  request.POST POST里面可能拿不到数据,但是在body中一定会拿到数据
  request.body
  request.GET
  request.path_info
  request.method
  request.session
  request.cookies
  ....
10、Form验证
  创建规则:
  类:
    字段:    

        required=True,
        min_length=3,
        max_length=18,
        error_messages={
            ‘required‘: ‘密码不能为空‘,
            ‘min_length‘: ‘密码长度不能小于3‘,
            ‘max_length‘: ‘密码长度不能大于18‘,
            ‘invalid‘: ‘密码格式错误‘,
        },

      validators=[RegexValidator(‘\d+‘,‘只能是数字‘) ]
11、数据库操作
  13个API操作
    all,filter,get,values,values_list,fast,last,distinct,reverse,include,order_by, exist,count
    另加2个:only、refer
    FK ManyToMany
12、模板
  自定义过滤器和标签
  1、常见一个templatetags文件夹
  2、在该文件夹中随便创建一个py文件
  3、在使用自定义simple_tag和filter的html文件中导入之前创建的 my_tags.py
  3、{% load my_tags %} 
  自定义过滤器函数的参数只能两个,可以进行逻辑判断
  自定义标签无参数限制,不能进行逻辑判断

13. Session和Cookie是什么?什么区别和关系?Session原理?
由于http无状态,当请求进来的时候不会保存状态,当每次访问的时候就不知道是谁进来了,这就引出了cookie
cookie的原理:
  服务器产生内容,浏览器收到请求后保存在浏览器;
  当浏览器再次访问时,浏览器会自动带上cookie,
  这样服务器就能通过cookie的内容来判断这个是“谁”了。
session 的原理:
  session会保存在服务器,这样比较安全
总结而言:cookie弥补了http无状态的不足,让服务器知道来的人是“谁”;
       但是cookie以文本的形式保存在本地,自身安全性较差;
     所以我们就通过cookie识别不同的用户,对应的在session里保存私密的信息以及超过4096字节的文本。

另外,上述所说的cookie和session其实是共通性的东西,不限于语言和框架
14. 什么是模板继承,好处是什么?

  模板继承{% extends  "base.html" %}

   好处:缩减代码

原文地址:https://www.cnblogs.com/maaosheng/p/11621476.html

时间: 2024-08-30 04:30:09

生成器,装饰器之类的相关文章

Python 迭代器&生成器,装饰器,递归,算法基础:二分查找、二维数组转换,正则表达式,作业:计算器开发

本节大纲 迭代器&生成器 装饰器  基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式,运算后得出结果,结果必须与真实的计算器所得出的结果一致 迭代器&

python 迭代器 生成器 装饰器

迭代器 可以直接作用于for循环的对象统称为可迭代对象(Iterable). 可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator). 所有的Iterable均可以通过内置函数iter()来转变为Iterator. names = iter(['sun', 'ibm', 'sunny']) print(names) print(names.__next__()) print(names.__next__()) print(names.__next__()) print(

python学习笔记(5)--迭代器,生成器,装饰器,常用模块,序列化

生成器 在Python中,一边循环一边计算的机制,称为生成器:generator. 如: 1 >>> g = (x * x for xin range(10)) 2 >>> g3 <generator object <genexpr> at 0x1022ef630> 此处g就是一个生成器. 迭代器 我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list.tuple.dict.set.str等: 一类是gene

Python--day4--迭代器-生成器-装饰器-目录

迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器的一大优点是不要求事先准备好整个迭代过程中所有的元素.迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁.这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件 特点: 访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容 不能随机访问

迭代器/生成器/装饰器

迭代器 迭代器对象要求支持迭代器协议的对象,在Python中,支持迭代器协议就是实现对象的__iter__()和next()方法.其中__iter__()方法返回迭代器对象本身:next()方法返回容器的下一个元素,在结尾时引发StopIteration异常 可迭代对象 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration),默认的list.tuple.stri.dict对象都是可以迭代的. isinstance(obj

Python-迭代器&amp;生成器&amp;装饰器&amp;软件目录结构规范-Day5

目录Day-Python-迭代器&生成器 21.生成器 21.1.生成器引入 21.2.生成器作用 31.3.创建生成器的方法 31.4.用函数来实现复杂的生成器 51.5.把函数变成生成器通过yield来实现 61.6.函数定义中包含yield关键字==generator生成器 81.7.通过yield实现单线程并发运算效果 92.迭代器 102.1.迭代器的定义 102.2.inter()函数-将列表.字典.字符串转换成迭代器 112.3.小结 123.装饰器 123.1.装饰器-最初需求

参数-匿名函数-生成式-生成器-装饰器

1.函数的参数 参数类型:关于函数的参数,我们经常在一些代码中会发现 def(*args,**kwargs)的表现形式,其中定义的分别是元组和字典: *args -- tuple(1,) **kwargs -- dict("k":"v") 例如: fun(*args,**kwargs ) fun(1,2,3,4,5,a=10,b=40 ) 我们也可以简单的定义一个函数的参数: def add(*args): total = 0 for i in args: tota

Python 全栈开发五 迭代器 生成器 装饰器

一.迭代器 迭代器是一个可以记住遍历的位置的对象.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退. 迭代器有两个基本的方法:iter() 和 next(). 字符串,列表或元组对象都可用于创建迭代器,生成迭代器的方法是iter(): >>li = [1,2,3,4,5] >>it = iter(li) #生成一个迭代器 >>it.__next__() 1 >>next(it) #以上两种next都可以使用 2 >

迭代器,生成器,装饰器,递归

迭代器 可迭代对象 1)定义:在python中,但凡内部含有--itter--方法的对象,都是可迭代对象 可以通过dir()去判断一个对象具有什么方法 dir()会返回一个列表,这个列表中含有该对象的以字符串形式的所有方法 从字面意思来说:可迭代对象就是一个可以重复取值的数据集. 从专业角度来说:但凡内部含有iter方法的对象,都是可迭代对象 . 可迭代对象可以通过判断该对象是否有’iter’方法来判断. 可迭代对象的优点: 可以直观的查看里面的数据.操作方法多,灵活 可迭代对象的缺点: 1.占

Day4 - 迭代器&amp;生成器、装饰器、Json &amp; pickle 数据序列化、软件目录结构规范

---恢复内容开始--- 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 需求:列表a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求把列表里的每个值加1 1 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 2 b = [] 3 for i in a: 4 b.append(i+1) 5 a = b 6 print(a) 普通青