【汇总】Python面试知识点总结(上)

Python面试知识点总结吐血整理

Python基础

数据类型和变量

字符串和编码

使用list和tuple

条件判断

循环

使用dict和set

StackOverflow

Python中有三元运算符吗 |
怎么在windows下安装pip |
如何在一个表达式里合并两个字典 |
用字典的值对字典进行排序 |
如何在一个函数里用全局变量 |
Python中的”小震撼”:变化的默认参数 |
检查字典,列表,元组为空的方法 |
怎么用引用来改变一个变量 |
在循环中获取索引(数组下标) |
Python中的appen和extend |
字典里添加元素的方法 |
类里的静态变量 |
如何移除换行符 |
为什么用pip比用easy_install的好 |
把字符串解析成浮点数或者整数 |
怎么样获取一个列表的长度 |
为什么是string.join(list)而不是list.join(string) |
检查一个字符串是否是一个数字 |
查找列表中某个元素的下标 |
合并列表中的列表 |
检查一个键在字典中是否存在 |
在列表中随机取一个元素 |
通过列表中字典的值对列表进行排序 |
字典推导式 |
反转字符串 |
获取列表最后一个元素 |
Python中用什么代替switch语句 |
生成包含大写字母和数字的随机字符串 |
合并两个列表 |
输出到stderr |
字符串格式化 |
怎么样去除空格(包括tab) |
合并两个列表 |
用pip升级所有包 |
给字符串填充0 |

实用编程案例

函数

调用函数

定义函数

函数的参数

递归函数

StackOverflow

静态方法 |
为什么代码在一个函数里运行的更快 |
args和 kwargs |
通过函数名的字符串来调用这个函数 |

实用编程案例

定义二元一次方程求解的函数 |
说明pow函数(x的n次方)的实现原理 |
定义带有可变参数的函数 |
定义递归函数 |

高级特性

切片

迭代

列表生成式

生成器

迭代器

StackOverflow

Python中关键字yield有什么作用
理解Python切片 |
在Python怎么样才能把列表分割成同样大小的块 |
获得一个字符串的子串 |
在Python中如何直达搜一个对象是可迭代的 |

实用编程案例

定义打印某区间的奇偶数列表函数 |
序列切片操作 |
strip()函数【去除字符串首尾的字符】实现原理 |
python序列的迭代 |
python序列的解包 |
说明max()与min()函数的实现原理 |
列表生成式操作 |
使用迭代器生成斐波拉契数列 |
使用迭代器生成杨辉三角 |
可迭代对象&迭代器的常用方法 |

函数式编程

高阶函数

map/reduce

filter

sorted

返回函数

匿名函数

装饰器

偏函数

StackOverflow

Python中如何在一个函数中加入多个装饰器

实用编程案例

定义一个高阶函数 |
map()函数的使用 |
reduce()函数的使用【functools模块reduce函数】 |
filter()函数的使用 |
sorted()函数的使用 |
定义返回函数 |
定义并使用闭包 |
定义匿名函数 |
定义装饰器函数【functools模块】 |
使用闭包创建工厂类方法 |
使用nonlocal关键字对闭包中嵌套作用域变量进行变更 |
定义偏函数【functools.partial方法】 |
定义带有默认参数的函数 |

模块

使用模块

安装第三方模块

StackOverflow

if name == main是干嘛的 |
在Python里怎么读取stdin |
在Python里获取当前时间 |
从相对路径引入一个模块 |

实用编程案例

面向对象编程

类和实例

访问限制

继承和多态

获取对象信息

实例属性和类属性

StackOverflow

装饰器@staticmethod和@classmethod有什么区别? |
理解Python中super()和init()方法 |
str和repr__的区别 |
检查字符串包含的方法 |
如何知道一个对象有一个特定的属性 |
如何获取实例的类名 |
在实例名字前单下划线和双下划线的含义 |
查看一个对象的类型 |

实用编程案例

作用域的命名及使用 |
设计类和实例-上 |
设计类和实例-中【使用slots |
设计类和实例-下【使用@property】 |
设计类继承【单继承&多继承】 |
判断变量,方法,类的类型 |
获取对象的属性和拥有的方法 |
定义类属性和实例属性 |

面向对象高级编程

使用slots

使用@property

多重继承

定制类

使用枚举类

使用元类

StackOverflow

Python中的元类(metaclass)是什么 |
在Python里如何用枚举类型 |

实用编程案例

设计拥有多继承的类【MixIn】 |
设计拥有定制方法的类 |
定义和使用枚举类【Enum】 |
定义和使用元类 |

错误、调试和测试

错误处理

调试

单元测试

文档测试

StackOverflow

在一行里获取多个异常 |
手动抛出异常 |

实用编程案例

定义含有捕获异常的方法【使用try…except…except…except…else…finally…】 |
定义含有记录错误的方法【使用内置的logging模块】 |
定义抛出错误的方法【使用raise语句】 |
定义单元测试的方法【使用unittest模块】 |
定义文档测试的方法【使用doctest模块】 |

IO编程

文件读写

StringIO和BytesIO

操作文件和目录

序列化

StackOverflow

Python如何判断一个文件是否存在 |
在Python中调用外部命令 |
检查一个文件夹是否存在,如果不存在就创建它 |
列出目录中的所有文件 |
复制文件 |
把文件一行行读入数组 |

实用编程案例

同步.异步IO的含义 |
定义读文件数据的方法 |
定义写文件数据的方法 |
定义内存中读写str的方法【StringIO】 |
定义内存中读写bytes的方法【BytesIO】 |
定义操作系统的环境变量和目录和文件的方法【os模块】 |
定义Python语言的对象序列化与反序列化的方法【pickle模块】 |
定义其他语言对的对象序列化与反序列化的方法【json模块】 |

进程和线程

多进程

多线程

ThreadLocal

进程 vs. 线程

分布式进程

StackOverflow

实用编程案例

进程,线程,多任务,pid、ppid |
实现非Windows下创建一个子进程【os模块】 |
实现使用进程池批量创建子进程【进程池Pool】 |
实现子进程的输入和输出【subprocess模块】 |
实现进程间的通信【multiprocessing模块的Queue、Pipes等多种方式】 |
实现创建和调用子线程【threading模块】 |
实现多线程加锁【lock.acquire()】 |
实现Python在多核CPU下的多核任务【】 |
理解计算密集型 vs. IO密集型;同步IO vs. 异步IO |
实现分布式进程【multiprocessing模块,managers子模块】 |

正则表达式

StackOverflow

实用编程案例

理解常用的正则表达式 |
实现正则表达式判断字符串是否匹配【re模块】 |
实现正则表达式切分字符串【re模块】 |
实现正则表达式提取子串【re模块】 |
实现正则表达式(非)贪婪匹配【re模块】 |

Powered by Hexo and Hexo-theme-hiker

Copyright © 2013 - 2018 海球的博客 All Rights Reserved.

UV : | PV :