全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📝 1 篇文章 24 道配套习题

📝 配套习题(24 题)

1
单选题

在Python中,当访问 obj.attr 时,属性查找的正确顺序是:

A

实例字典 → 类字典 → 基类字典 → 描述符

B

数据描述符 → 实例字典 → 非数据描述符 → 类字典

C

数据描述符 → 实例字典 → 类字典 → 非数据描述符 → 基类字典

D

实例字典 → 数据描述符 → 类字典 → 非数据描述符

2
多选题

关于Python属性查找链中的描述符,以下说法正确的有:

A

数据描述符定义了__get____set__方法,优先级高于实例字典

B

非数据描述符只定义了__get__方法,优先级低于实例字典

C

property装饰器返回的是一个数据描述符

D

类方法(classmethod)使用的是非数据描述符

3
填空题

在Python属性查找机制中,当访问一个属性时,__getattribute__方法会被首先调用。如果该方法在查找过程中遇到数据描述符,则会调用描述符的____________________方法;如果属性在实例字典中找到且没有数据描述符拦截,则直接返回该值。只有当__getattribute__抛出______________异常时,Python才会尝试调用________________________方法作为兜底处理。

4
单选题

在Python导入系统中,sys.meta_path 列表中存放的是什么?其执行顺序是怎样的?

A

存放模块搜索路径,按照列表顺序依次搜索

B

存放元路径查找器(Meta Path Finder),在导入时按顺序调用其find_spec方法

C

存放路径钩子(Path Hooks),用于创建路径条目查找器

D

存放已导入模块的缓存,避免重复导入

5
多选题

当执行 import mypackage.mymodule 语句时,Python导入系统会执行哪些操作?

A

检查 sys.modules 是否已缓存该模块

B

按顺序调用 sys.meta_path 中查找器的 find_spec 方法

C

如果找到模块,创建Module对象并执行模块代码

D

将模块添加到 sys.modules 缓存中

6
填空题

Python的PathFinder是默认的元路径查找器之一,它通过遍历________列表来查找模块。对于每个路径条目,PathFinder会调用sys.path_hooks中注册的________来创建对应的路径条目查找器。如果路径是目录,最终会使用__________来搜索.py.pyc等文件。

7
单选题

Python虚拟机在执行字节码时,每个栈帧(Frame)对象包含哪些核心组件?

A

代码对象、局部变量表、全局变量表、操作数栈

B

指令指针、局部变量表、全局变量表、内置命名空间、值栈

C

字节码列表、符号表、常量表、变量名列表

D

模块对象、类对象、函数对象、异常处理表

8
多选题

关于Python字节码执行引擎,以下说法正确的有:

A

字节码是基于栈的虚拟机指令,操作数存储在值栈上

B

LOAD_FAST指令用于加载局部变量到值栈

C

CALL_FUNCTION指令会创建新的栈帧并压入调用栈

D

字节码指令可以有参数,也可以没有参数

9
填空题

Python虚拟机的核心执行循环是一个无限循环,每次迭代从当前栈帧的________中读取下一条字节码指令。指令指针f_lasti记录当前执行位置。执行指令后,根据指令类型可能会操作值栈、修改局部变量、或跳转到其他位置。当执行到____________指令时,当前栈帧的返回值被压入调用者的值栈,当前栈帧从调用栈中弹出,执行权返回给__________

10
单选题

在Python C API中,所有Python对象都以PyObject结构体为基础。PyObject包含哪两个核心成员?

A

ob_type(类型指针)和ob_value(值)

B

ob_refcnt(引用计数)和ob_type(类型指针)

C

ob_size(大小)和ob_data(数据指针)

D

ob_state(状态)和ob_methods(方法表)

11
多选题

在C/C++程序中嵌入Python解释器,需要执行哪些必要步骤?

A

调用 Py_Initialize() 初始化解释器

B

设置 PyConfigPy_SetPythonHome() 配置Python环境

C

使用 PyImport_Import() 导入模块

D

程序结束时调用 Py_Finalize() 清理解释器

12
填空题

在Python C API中,内存管理采用引用计数机制。增加引用计数使用_________宏,减少引用计数使用_________宏。当引用计数降为0时,对象会被立即回收。在多线程环境中,Python使用______(全局解释器锁)来保护引用计数的线程安全,确保同一时刻只有一个线程执行Python字节码。

13
单选题

在Python中,type是所有类型的元类,而object是所有类的基类。关于类型系统,以下描述正确的是:

A

type.__bases__(object,)object.__class__type

B

type.__bases__(),type.__class__type

C

object.__bases__(type,)object.__class__object

D

typeobject的实例,objecttype的子类

14
多选题

Python的PyTypeObject结构体定义了类型的各种行为,以下哪些是其重要成员?

A

tp_name:类型名称字符串

B

tp_basicsizetp_itemsize:实例内存大小

C

tp_methodstp_members:方法和成员列表

D

tp_dictoffset:实例的__dict__偏移量

15
填空题

在CPython中,每个Python对象都以对象头开始。定长对象(如int、float)使用PyObject_HEAD宏,包含_________(引用计数)和_______(类型指针)。变长对象(如list、str、tuple)使用PyVarObject结构,额外包含_______字段表示元素数量。这些结构确保了Python对象的统一内存布局,使得PyObject*指针可以指向任何Python对象。

16
单选题

Python解释器启动时,Py_Initialize()函数执行的主要初始化顺序是什么?

A

内存分配器→运行时状态→内置类型→内置模块→sys模块→导入系统

B

运行时状态→内存分配器→内置类型→sys模块→内置模块→导入系统

C

运行时状态→内置类型→内置模块→sys模块→导入系统→site模块

D

内存分配器→导入系统→sys模块→内置类型→内置模块→site模块

17
多选题

关于Python解释器启动过程中site模块的作用,以下说法正确的有:

A

site模块负责将site-packages目录添加到sys.path

B

site模块会读取.pth文件并执行其中的路径添加命令

C

使用-S参数启动Python会跳过site模块的导入

D

site模块只处理标准库路径,不处理第三方包路径

18
填空题

Python解释器执行一个脚本的完整流程:首先解释器调用Py_Initialize()进行初始化,然后使用PyRun_String()PyRun_File()执行代码。代码首先被__________转换为token流,然后由__________构建AST抽象语法树,接着编译器将AST转换为______(Code Object),最后虚拟机执行字节码生成结果。执行完成后调用Py_Finalize()清理资源。

19
单选题

Python的LEGB规则定义了变量查找顺序:Local→Enclosing→Global→Builtin。在字节码层面,这四种作用域分别使用什么指令进行访问?

A

LOAD_FASTLOAD_DEREFLOAD_GLOBALLOAD_BUILTIN

B

LOAD_LOCALLOAD_ENCLOSINGLOAD_GLOBALLOAD_BUILTIN

C

LOAD_FASTLOAD_CLASSDEREFLOAD_GLOBALLOAD_NAME

D

LOAD_FASTLOAD_DEREFLOAD_GLOBAL、(内建变量通过LOAD_GLOBAL查找)

20
多选题

关于Python闭包的内部实现,以下说法正确的有:

A

闭包捕获的变量存储在cell对象中,通过__closure__属性访问

B

函数的__code__.co_freevars包含被捕获的变量名列表

C

内层函数通过LOAD_DEREF指令访问捕获的变量

D

闭包变量在嵌套函数调用之间共享同一个cell对象

21
填空题

Python的Code Object包含多个与作用域相关的属性。co_varnames存储________名列表(包括参数);co_cellvars存储需要被嵌套函数捕获的变量名(即会放入______对象的变量);co_freevars存储从外层函数捕获的变量名。在栈帧中,这些变量存储在f_localsplus数组的不同区域:局部变量在快速槽位、cell变量在cellvars区、freevars在________区。

22
单选题

在Python中,关于bound method和function的区别,以下描述正确的是:

A

实例方法通过实例访问时返回bound method,通过类访问时返回function

B

bound method的第一个参数(self)已被绑定,调用时无需再传入

C

Python 3中不存在unbound method,类访问实例方法返回普通function

D

bound method的__self__属性指向绑定的实例

23
多选题

Python中函数作为描述符参与方法绑定,以下关于描述符调用机制的说法正确的有:

A

函数对象实现了__get__方法,是非数据描述符

B

func.__get__(instance, type)返回bound method对象

C

func.__get__(None, type)返回原始函数对象

D

bound method调用时会自动传入__self__作为第一个参数

24
填空题

Python的特殊方法(如__add____len__)查找机制与普通属性查找不同。特殊方法查找会绕过实例字典,直接在类型对象上查找。例如len(obj)实际调用的是________________________,而不是obj.__len__。这种设计是为了确保特殊方法的调用一致性,防止实例字典中同名属性的干扰。对于内置类型,特殊方法可能定义在______的实现中,Python会直接调用对应的C函数,如list.__len__对应_________槽位。

下一个专题 → 上下文管理器专题

📝 发现内容有误?点击此处直接编辑

想查看更多习题和详细解析?
小程序提供完整的题库和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库