Skip to content

Python

⭐⭐⭐ 核心必背

动态类型是 Python 的核心特性之一,请说明动态类型在开发过程中可能引发的问题?

参考答案

运行时才发现类型错误;IDE/静态检查弱;重构易漏改;接口契约靠约定;与 C 扩展或性能敏感代码交互时需额外校验。可补充:大型项目用类型注解+mypy 缓解。

描述 Python 的 GIL(全局解释器锁)对多线程程序的影响。

参考答案

CPython 同一时刻仅一个线程执行字节码,CPU 密集多线程无法并行加速;I/O 密集可因阻塞释放 GIL 而并发;真正并行用多进程或改用无 GIL 实现(如部分库、其他解释器)。

请解释 Python 中列表(list)和元组(tuple)的区别,并说明在什么情况下应该使用其中某一种。

参考答案

list 可变、tuple 不可变;tuple 可作 dict 键、表达固定结构;需要原地增删用 list。不可变带来哈希与线程安全语义。

Python 中 is== 有什么区别?

参考答案

is 比较对象身份(同一内存);== 比较值(可重载 __eq__)。小整数等可能驻留,is 易误判,一般用 == 比数值,is None 比单例。

请解释 Python 中装饰器(decorator)的工作原理,并写一个简单的装饰器示例。

参考答案

语法糖:@f 等价于 g = f(g),即高阶函数包装。示例:def log(fn): ... return wrapper

Python 中 *args**kwargs 的作用是什么?在什么情况下会使用它们?

参考答案

收集多余位置参数与关键字参数;用于包装/转发调用(装饰器、兼容多签名的 API)。

请说明 @staticmethod@classmethod 的区别以及各自的使用场景。

参考答案

staticmethod 无隐式首参;classmethod 首参为类 cls。工厂方法、替代构造函数用 classmethod;与类相关但不依赖类/实例状态用 staticmethod。

⭐⭐ 常见重点

简述 Python 的垃圾回收机制,它如何处理循环引用?

参考答案

引用计数为主,对象计数为 0 即回收;循环引用由分代 GC 周期检测(标记-清除),仅对「容器对象」参与循环检测;weakref 可打破环。

在 Python 中,__new____init__ 方法有什么区别和联系?

参考答案

__new__ 负责创建实例(可控制单例、不可变子类如 tuple),__init__ 负责初始化已创建对象;先 __new____init____new__ 是静态方法语义、返回实例。

Python 中生成器(generator)与迭代器(iterator)的区别是什么?

参考答案

迭代器实现 __iter__/__next__;生成器是用 yield 的函数,是迭代器的一种简便写法,惰性求值、省内存。

解释 Python 中闭包的概念,并给出一个实际应用的例子。

参考答案

内部函数引用外层作用域变量,外层返回后仍「捕获」该环境。例:装饰器保存被装饰函数;工厂函数生成带配置的回调。

Python 中的生成器是什么?与普通函数相比有什么优势?

参考答案

yield 的函数,按需产出、不一次性占满内存;可表达无限序列、流水线处理。

拓展了解

Python 中的元类(metaclass)是什么?它的作用和使用场景有哪些?

参考答案

「类的类」,创建类时介入。用于 ORM 字段注册、API 自动生成、统一约束/钩子。日常业务少用,框架层常见。

仅供学习交流,题目与答案要点请结合业务与最新论文核对。