【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)

11 Python装饰器基础

11.4 闭包

11.4.1 闭包概念及其基本使用
  • 学习目标
    • 说出函数名赋值给一个变量的作用;
    • 说出闭包的特点;
  • 1、函数概念及引用

  • 函数名是一个特殊变量,存储函数存储地址
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第1张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第2张图片

  • 和变量名一样,函数名只是函数代码空间的引用,当函数名赋值给一个对象的时候,就是引用传递;

  • 2、闭包
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第3张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第4张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第5张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第6张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第7张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第8张图片

  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第9张图片

11.4.2 闭包中的变量问题-nonlocal
  • 1、闭包中使用外部变量
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第10张图片
  • 2、修改外部函数中的变量

    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第11张图片
  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第12张图片

11.5 装饰器

11.5.1 装饰器基础
  • 学习目标
    • 装饰器的应用场景;
    • 装饰器函数较之于闭包的明显特点;
    • 使用装饰器的语法格式;
  • 1、装饰器引入
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第13张图片
    image-20220606194802399
  • 2、装饰器概念
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第14张图片
  • 例子:
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第15张图片
    image-20220606195753132
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第16张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第17张图片
    image-20220606200611516
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第18张图片
  • 小结:装饰器就是在不修改源代码的基础上,给函数增加新的功能;

【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第19张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第20张图片

11.5.2 装饰有参数的函数

【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第21张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第22张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第23张图片

  • 注意:func( * args, * * kwargs)而不是func(args,kwargs),需要进行参数拆包,
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第24张图片
  • 错误输出分析;func(args,kwargs)
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第25张图片
  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第26张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第27张图片
11.5.3装饰的函数有返回值

【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第28张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第29张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第30张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第31张图片

  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第32张图片

11.6 主从配置

  • 学习目标
    • 说出主从配置的应用场景;
  • 1、主从配置
    image-20220606205435924
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第33张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第34张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第35张图片

12 Python高级语法专题1

12.1 装饰器(进阶)

12.1.1 在原装饰器上设置外部变量

【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第36张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第37张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第38张图片

  • 当@test(参数),首先执行test(参数),不执行def函数定义,直接返回function_out,然后就是@function_out,跟之前一样;

  • 当@function_out没有参数时,就直接返回function_in,然后执行function_in函数,就相当于

    • “@function_out” == “login=function_out(login)”
  • 可以通过这种方式,向装饰其内部传递参数;

  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第39张图片

12.1.2 多重装饰器

【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第40张图片
image-20220607120955745

  • 分析多重装饰器
    • @makeItalic在上面,下面还有一个@,这个时候会先暂停,先执行下面的@makeBold装饰器,@makeBold翻译为test3=makeBold(test3);开始执行;
      【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第41张图片
  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第42张图片
12.1.3 类装饰器–使用一个类为函数做装饰
  • 就之前是用一个闭包装饰函数
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第43张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第44张图片
  • 分析
    • 类中定义__ call __函数,test()会执行call函数;
    • @Test,相当于test=Test(test),类中的func就是test,而test接着类()就是一个对象,对象()就调用call函
  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第45张图片

12.3 GIL锁

12.3.1 GIL锁的引入

【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第46张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第47张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第48张图片

  • 多线程是伪多线程,并没有把cpu资源沾满,因为全局GIL锁,一个时刻只能让一个线程使用cpu;
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第49张图片
  • 小结
  • 【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第50张图片
12.3.2 GIL锁概念及影响
  • 学习目标
    • 知道GIL的作用
    • 知道GIL对多线程执行的影响
      image-20220607145839564
      【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第51张图片
      【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第52张图片
  • 小结
    • 多进程是可以利用多核CPU的,只是多线程不可以,GIL是在多线程中的全局解释锁
      【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第53张图片
12.3.2 GIL解决方案

image-20220607145926495
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第54张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第55张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第56张图片

  • 小结–通过胶水c语言,绕过cpython的GIL锁,解决历史遗留问题(单核)
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第57张图片

12.4 深浅拷贝

12.4.1 可变与不可变
  • 当发现目前分配空间不足储存,是可以拓展(可变),还是需要另找一块地方存储(不可变
    • 字典和列表都可以往里追加新内容,是可变类型
    • 不可变:数字、字符串、元组
      【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第58张图片
      【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第59张图片
      【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第60张图片
12.4.2 简单可变类型深、浅拷贝

为保证数据的独立性,在开发中,我们希望两个变量值一样,而且互不影响,使用拷贝技术;

  • 1、python中深浅拷贝

python中的copy模块,可以实现拷贝功能;

  • 2、浅拷贝

    • 引用(地址)拷贝,并没有产生新的空间,如果拷贝的是对象,原对象和copy对象都指向同一个内存空间,只拷贝父对象,不会拷贝对象的内部的子对象;

    • 用法:copy.copy(变量)会进行拷贝

  • 3、深拷贝

    • 会产生新的空间,如果拷贝的是对象,原对象和copy对象都指向不同的内存空间,会拷贝对象及其子对象(会产生新的空间);

    • 用法:copy.deepcopy(变量名)

  • 4、作用

    • 减少内存使用;
    • 数据清洗、修改或者入库的时候,对原数据进行复制一份,以防数据修改之后,找不到原数据;
      【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第61张图片
      【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第62张图片
  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第63张图片

12.4.3 复杂可变类型深、浅拷贝

【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第64张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第65张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第66张图片

  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第67张图片
12.4.4 简单不可变类型深、浅拷贝

【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第68张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第69张图片

  • 小结

    • 不管深浅拷贝,都是引用,都是浅拷贝

12.4.5 复杂不可变类型深、浅拷贝

【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第70张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第71张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第72张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第73张图片

  • 小结–深拷贝取决于绿色框的类型,可变就会深拷贝
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第74张图片
12.4.4 切片拷贝、字典拷贝
  • 1、切片拷贝
    • 简单可变是深拷贝
      【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第75张图片
  • 2、字典拷贝
    • 字典自带一个copy是浅拷贝;
  • 【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第76张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第77张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第78张图片
  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第79张图片

总结:

1)切片拷贝,本身为浅拷贝,但如果是简单可变,就会开辟新空间,与深拷贝行为一样;

2)字典拷贝,自带的copy,均为浅拷贝;

3)简单可变类型:深,浅拷贝都是深拷贝;

4)复杂可变类型:浅拷贝底层数据不变;深拷贝,会执行深拷贝;

5)简单不可变类型:深、浅拷贝都是浅拷贝;

6)复杂不可变类型:浅拷贝取决于外层不可变,就是浅拷贝,深拷贝取决嵌套类型,嵌套可变就是深拷贝;

13 Python高级语法专题2

13.1 import

13.1.1 import导入模块路径

知道如何导入指定目录下的模块

  • 1、import搜索路径
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第80张图片
  • 2 程序执行时添加新的模块路径
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第81张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第82张图片
  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第83张图片
13.1.2 reload加载问题

说出reload作用

  • 1、重新导入模块
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第84张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第85张图片
  • 尝试再次导入模块,发现依然无法正确获得修改后的模块内容;
  • 原因:
    • 第一次import模块后,模块被导入到当前文件,第二次再使用import导入同一个模块,第二次导入将不会起作用,这是Python解释器的规则,避免重复导入一个模块带来的其它问题。
  • 解法方案;
    • 想办法重新加载一次模块
      【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第86张图片
  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第87张图片
13.1.3 from import的私有化问题

【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第88张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第89张图片

  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第90张图片
13.1.4 import和from import的区别

【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第91张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第92张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第93张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第94张图片

  • from girl import * 其实是将其拷贝了一份变量

  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第95张图片

13.2 拆包与继承

13.2.1 拆包
  • 1、拆包引入

拆包:对于函数中的多个返回数据,去掉元组,列表或者字典,直接获取里面数据的过程;
image-20220611121801920
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第96张图片

  • *因为传过来的就是,两个复杂数据类型,没有字典做对应的key值,a=100,b=200这种形式,所以需要改为func01(args, * *kwargs);

【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第97张图片

  • 小结
    • 可变参数*args, * * kwargs默认会有封包过程;
    • 如果想要继续以单数传递到下一个函数,传递的过程必须集上* * *,func( * args, * * kwargs);
13.2.2 单继承中的super()

单继承中super()使用注意

  • 1、单继承中super
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第98张图片
    image-20220611144956274
  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第99张图片
13.2.3 多继承以及MRO顺序
  • 学习目标
    • 多继承特征;
    • MRO顺序的作用;
    • super的作用;
  • 1、单独调用父类的方法

    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第100张图片
    image-20220611145408297
  • 2、使用super()调用父类方法
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第101张图片
  • super()调用一次就可以了,会自动执行父类的Init()
  • 注意,因为不同的多父类继承,每个父类的Init()参数不一样,就需要*args,和 * * kwargs了
  • 使用super()可以避免父类被多次调用初始化,万一是文件被多次打开,造成资源泄露问题;
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第102张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第103张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第104张图片
  • 补充题:
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第105张图片
  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第106张图片

13.3 property

13.3.1 property基本使用

之前定义类属性,一般会定义另外的类方法用于修改属性,不会直接暴露属性,是通过方法调用,而property就是将这一过程简化一些

property是一个特殊的装饰器,像使用属性一样使用方法

  • 1、property属性
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第107张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第108张图片
  • 2、简单实例
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第109张图片
    image-20220611153950978
  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第110张图片
13.3.2 property其他使用方式
  • 学习目标
    • 知道@xxx.setter的作用;
    • 知道@xxx.deleter的作用;
  • 1、装饰器方式
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第111张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第112张图片
  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第113张图片
13.3.3 property作为类属性
  • 1、类属性方式,创建值为property对象的类属性
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第114张图片

BAR=property(get_bar)是创建了一个property对象给BAR
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第115张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第116张图片

  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第117张图片

13.4 魔法属性与方法

  • 学习目标
    • 知道__ doc __魔法方法的作用;
    • 知道__ module __、 _ _class _ _魔法方法的作用;
    • 知道 __ init __魔法方法的作用;
    • 知道 __ del __ 魔法方法的作用
    • 知道 __ call __魔术方法的作用;
    • 知道 __ dict _ _魔术方法的作用;
    • 知道 __ str __魔术方法的作用;
    • 知道__ getitem __、 _ _setitem _ _、 _ _ delitem _ _ 魔法方法的作用;
  • 1、魔法属性和方法概览
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第118张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第119张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第120张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第121张图片

__ dict __返回实例属性(init里的)的信息,返回一个字典

类调用就是返回类属性信息,对象调用就返回实例属性,对象信息
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第122张图片
image-20220612192242878

  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第123张图片

13.5 with上下文管理器

  • 学习目标
    • 说出使用with的好处;
    • 能够自定义符合with规范的上下文管理类;
  • 1、使用with的作用
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第124张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第125张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第126张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第127张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第128张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第129张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第130张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第131张图片
  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第132张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第133张图片

14 miniWeb框架

14.1 框架概念

  • 学习目标
    • 知道静态资源和动态资源;
    • 说出web服务器的作用
  • 1、框架和web服务器的关系

web服务器主要是接收用户浏览器的请求,根据用户的资源请求返回不同的资源;
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第134张图片

  • 2、重要概念
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第135张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第136张图片

14.2 minWeb基础框架构建

  • 学习目标
    • 说出如何实现访问.py和访问.html访问不同的内容
      【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第137张图片
  • 1、Web服务器基础代码
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第138张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第139张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第140张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第141张图片
  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第142张图片

14.3 minWeb框架构建-动态显示

  • 学习目标
    • 根据客户端不同的动态页面请求,做不同的内容响应
      【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第143张图片
  • 1、代码实现
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第144张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第145张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第146张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第147张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第148张图片

14.4 路由(列表django,装饰器flask)

14.4.1 路由列表(django)
  • 学习目标
    • 说出路由的作用
  • 1、概念
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第149张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第150张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第151张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第152张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第153张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第154张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第155张图片

  • 存放的是函数引用,函数引用=字典【key】,再调用

  • 小结

    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第156张图片

14.4.2 路由装饰器(flask)
  • 学习目标
    • 使用装饰器路由自动添加路径数据
  • 1、装饰器路由

    • 使用装饰器工厂函数接收路径参数,进而实现装饰器路由
  • 2、代码实现
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第157张图片

【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第158张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第159张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第160张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第161张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第162张图片

  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第163张图片

14.5 选股系统

14.5.1模板替换
  • 1、代码实现
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第164张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第165张图片
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第166张图片
  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第167张图片
14.5.2 股票信息-数据加载1
  • 学习目标
    • 创建数据库、导入数据
    • 使用pymysql模块操作数据库
  • 1、核心思路

    • 使用pymysql模块连接数据库,并查询数据库中的数据,显示到页面上

    • 1、准备数据库;

      2、改进index()函数,连接数据库;

      3、把数据库中的数据显示到网页中;

  • 2、准备案例所需数据

image-20220614140117360
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第168张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第169张图片
【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第170张图片

  • 小结

【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第171张图片

  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第172张图片
14.5.3 股票信息-数据加载2
  • 学习目标
    • 优化显示效果
  • 1、代码实现
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第173张图片
    image-20220614140259049
  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第174张图片
14.5.4 个人中心-数据加载
  • 学习目标
    • 利用多表关联查询,获取数据并且显示出来
      【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第175张图片
      【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第176张图片
      【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第177张图片
      【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第178张图片
  • 小结
    【黑马-python进阶】---学习笔记(9)---高级语法(装饰器,GIL锁,拆包、继承、miniWeb)_第179张图片

你可能感兴趣的:(Python,学习,flask,python)