python必会知识点总结

1.什么是列表的深拷贝,浅拷贝?

浅拷贝:
    只拷贝一级容器中的所有元素独立出一个单独的空间.
深拷贝:
    把所有层级的容器中所有元素都单独拷贝一份,形成独立的空间

用法示例:请看

2.什么是LEGB?

LEGB原则(就近找变量原则)
#找寻变量的调用顺序采用LEGB原则(即就近原则)
B —— Builtin(Python);Python内置模块的命名空间      (内建作用域)
G —— Global(module); 函数外部所在的命名空间        (全局作用域)
E —— Enclosing function locals;外部嵌套函数的作用域(嵌套作用域)
L —— Local(function);当前函数内的作用域            (局部作用域)
依据就近原则,从下往上 从里向外 依次寻找

3.什么是闭包函数?有什么特点和意义?

相互嵌套的两个函数,如果内函数使用了外函数的局部变量
并且外函数把内函数返回出来的过程,叫做闭包
里面的内函数叫做闭包函数

是不是闭包?
    1.内函数用了外函数的那个局部变量
    2.外函数返回内函数

特点:在闭包函数中,内函数使用了外函数的局部变量
该变量会与内函数发生绑定,延长该变量的生命周期
持续到脚本执行结束

# 闭包的意义
'''
全局变量的作用域大,容易被篡改

闭包可以优先使用外函数中的变量,并对闭包中的值起到封装保护的作用
'''

示例请看:

4.什么是匿名函数?

概念: 用一句话来表达只有返回值的函数
语法: lambda 参数 : 返回值
特点: 简洁,高效

示例请看:

5.什么是迭代器?

迭代器:
    能被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator  迭代器是对象)
概念:
    迭代器指的是迭代取值的工具,迭代是一个重复的过程,每次重复都是基于上一次的结果而继续的,
    单纯的重复并不是迭代  
特征:
    并不依赖索引,而通过next指针(内存地址寻址)迭代所有数据,一次只取一个值,
    而不是一股脑的把所有数据放进内存.大大节省空间,

6.什么是高阶函数?

高阶函数 : 能够把函数当成参数传递的就是高阶函数 (map ,filter ,reduce , sorted)

.示例请看

7.什么是推导式?

 通过一行循环判断遍历出一系列数据的方法叫做推导式
语法:
    val for val in iterable

8.什么是生成器?生成器函数?

#生成器本质是迭代器,允许自定义逻辑的迭代器

#迭代器和生成器区别:
    迭代器本身是系统内置的.重写不了.
    而生成器是用户自定义的,可以重写迭代逻辑

#生成器可以用两种方式创建:
    (1)生成器表达式  (里面是推导式,外面用圆括号)
    (2)生成器函数    (用def定义,里面含有yield)

# yield 类似于 return
共同点在于:执行到这句话都会把值返回出去
不同点在于:yield每次返回时,会记住上次离开时执行的位置 , 下次在调用生成器 , 会从上次执行的位置往下走
而return直接终止函数,每次重头调用.
yield 6 和 yield(6) 2种写法都可以 yield 6 更像 return 6 的写法 推荐使用

9.什么是装饰器?

# ### 装饰器 : 在不改变原有代码的前提下,为原函数扩展新功能
"""
@符号 装饰器的标识符 :
    (1) 自动把下面修饰的原函数当成参数传递给装饰器
    (2) 把返回的新函数去替换原函数

10.什么是进程,线程,协程?

进程就是正在运行的程序,它是操作系统中,资源分配的最小单位.
资源分配:分配的是cpu和内存等物理资源
进程号是进程的唯一标识

同一个程序执行两次之后是两个进程
进程和进程之间的关系: 数据彼此隔离,通过socket通信

#进程是资源分配的最小单位
#线程是计算机中调度的最小单位

#线程的缘起
资源分配需要分配内存空间,分配cpu:
分配的内存空间存放着临时要处理的数据等,比如要执行的代码,数据
而这些内存空间是有限的,不能无限分配
目前配置高的主机,5万个并发已是上限.线程概念应用而生.

#线程的特点
线程是比较轻量级,能干更多的活,一个进程中的所有线程资源是共享的.
一个进程至少有一个线程在工作

# 线程池
# 实例化线程池 ThreadPoolExcutor (推荐5*cpu_count)
# 异步提交任务 submit / map
# 阻塞直到任务完成 shutdown
# 获取子线程的返回值 result
# 使用回调函数 add_done_callback

# 回调函数
就是一个参数,将这个函数作为参数传到另一个函数里面.
函数先执行,再执行当参数传递的这个函数,这个参数函数是回调函数


# 线程池 是由子线程实现的
# 进程池 是由主进程实现的


11. 简述面向对象的三大特征,,如何理解类和对象

封装,继承,多态, 对象是类的实例,类是对象的模板

13.简述super和self的作用

15.类中方法有哪些?

普通无参方法,绑定到对象的方法,绑定到类的方法,静态方法

16.简述反射的作用并列举反射相关的方法

通过字符串操作类对象 或者 模块中的相关成员的操作
hasattr() 检测对象/类是否有指定的成员
getattr() 获取对象/类成员的值
setattr() 设置对象/类成员的值
delattr() 删除对象/类成员的值

17.如何自定义异常

18.列举常用模块,简述作用

19.yield和return有什么区别?

# yield 类似于 return
共同点在于:执行到这句话都会把值返回出去
不同点在于:yield每次返回时,会记住上次离开时执行的位置 , 下次在调用生成器 , 会从上次执行的位置往下走
           而return直接终止函数,每次重头调用.

21.简述: isinstance, issubclass的作用

isinstance 判断对象的类型  (应用在类与对象之间)
issubclass 判断类的子父关系(应用在类与类之间)

22.列举与类相关的魔术属性

  __init__  __str__ __name__ __new__ __class__ __call__

23.计算类中的所有自定义成员个数

24.用生成器写一个斐波那契数列,得到前10项的数

25.两个有序列表,合并后去重且保持有序

26.什么是b/s , c/s架构

27.交换机,路由器特点

29.简述osi网络七层模型

30.简述三次握手,四次挥手

31.Tcp/udp两大协议区别

33.什么是生产者消费者模型

34.多线程场景中如何保证数据安全

35. 什么情况下死锁,如何解决?

 

posted @ 2022-03-14 21:53  urls  阅读(449)  评论(0编辑  收藏  举报