反射 PyObject * PyEval_GetBuiltins() Return value: Borrowed reference. 返回当前执行帧中内置函数的字典,如果没有则返回线程状态的解释器框架正在执行中 PyObject * PyEval_GetLocals() Return value: Borrowed reference. 返回当前执行帧中局部变量的字典,如果当前没有帧正在执行,则返回NULL. PyObject * PyEval_GetGlobals() Return value: Borrowed reference. 返回当前执行帧中全局变量的字典,或NULL如果当前没

imp– 访问 import internals 源代码: Lib / imp.py 自版本3.4以后不推荐使用: imp包正在等待弃用importlib. 这个模块提供了用于实现import语句的机制的接口。它定义了以下常量和函数: imp.get_magic() 返回用于识别字节编译的代码文件的魔术字符串值(.pyc文件)。(对于每个Python版本,此值可能不同。) 自版本3.4以后不推荐使用:使用importlib.util.MAGIC_NUMBER而不是 imp.get_suffixes() 返回一个3元素元组的列表,每个元素描述一个特定类型的模块。每个三元组的形式为(s

sys– 系统特定的参数和功能 该模块提供对解释器使用或维护的一些变量的访问,以及与解释器强烈交互的函数。它总是可用的 sys.abiflags 在使用标准configure脚本,它包含PEP 3149 . 版本3.2. sys.argv 传递给Python脚本的命令行参数列表。argv[0]是脚本名称(依赖于操作系统是否为完整路径名)。如果使用-c命令行选项解释器,argv[0]设置为字符串”-c”。如果没有脚本名称传递给Python解释器,argv[0]是空字符串. 要循环标准输入或命令行上给出的文件列表,请在运行fileinput之前的Ipython启动期间查看 sys.ba

faulthandler– 转储Python回溯 版本3.3中的新功能. 该模块包含显式转发Python跟踪,故障,超时或用户信号转储的函数。调用faulthandler.enable()为SIGSEGV, SIGFPE,SIGABRT, SIGBUS和SIGILL信号安装故障处理程序。您也可以通过设置PYTHONFAULTHANDLER环境变量或使用-X faulthandler命令行选项来启动它们. 故障处理程序与Apport或Windows故障等系统故障处理程序兼容处理程序。如果sigaltstack()功能可用,模块使用替代堆栈作为信号处理程序。这允许它甚至在堆栈溢出时转储

unittest– 单元测试框架 源代码: Lib / unittest / __ init__.py (如果您已经熟悉测试的基本概念,可能需要跳到断言方法列表.) unittest单元测试框架最初受JUnit启发,与其他语言的主要单元测试框架具有相似的风格。它支持测试自动化,共享测试的设置和关闭代码,将测试集合到集合中,以及测试与报告框架的独立性. 为了达到这个目的,unittest以面向对象的方式支持一些重要的概念: 测试夹具 A test fixture表示执行一个或多个测试所需的准备工作,以及任何关联清理操作。这可能涉及,例如,创建临时或代理数据库,目录或启动服务器进程.

signal– 为异步事件设置处理程序 这个模块提供了在Python中使用信号处理程序的机制 一般规则 signal.signal()函数允许定义自定义处理程序收到信号时被执行。安装了少量默认处理程序:SIGPIPE被忽略(因此管道和套接字上的写入错误可以报告为普通的Python异常)和SIGINT转换为KeyboardInterrupt异常. 特定信号的处理程序一旦设置,一直保持安装,直到它被明确重置(Python模拟BSD样式接口而不管底层实现),除了SIGCHLD的处理程序,底层实现 执行Python信号处理程序 Python信号处理程序不会在低级(C)信号处理程序中执行。相

使用asyncio进行开发 异步编程与经典的“顺序”编程不同. 本页列出了常见的错误和陷阱,并解释了如何避免它们. 调试模式 默认情况下,asyncio在生产模式下运行。为了简化开发,asyncio有debug mode. 有几种方法可以启用asyncio调试模式: 将PYTHONASYNCIODEBUG环境变量设置为1. 使用-X dev Python命令行选项. Passing debug=True到asyncio.run(). 调用loop.set_debug(). 除了启用调试模式外,还要考虑: 将 asyncio logger 的日志级别设置为logging.DEBUG,例如,可以在

子进程 本节介绍高级异步/等待asyncio API创建和管理子进程. 这是一个asyncio如何运行shell命令并获得结果的示例: import asyncioasync def run(cmd): proc = await asyncio.create_subprocess_shell( cmd, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE) stdout, stderr = await proc.communicate() print(f”[{cmd!r} exited with {proc.return

协同程序和任务 本节概述了与协同程序和任务一起使用的高级asyncio API . Coroutines Awaitables 运行asyncio程序 创建任务 睡觉 同时运行任务 屏蔽取消 超时 等待原语 从其他线程调度 内省 任务对象 基于生成器的协同程序 协同程序 使用async / await语法声明的协同程序是编写asyncio应用程序的首选方法。例如,下面的代码片段(需要Python 3.7+)打印“hello”,等待1秒,然后打印“world”: >>> import asyncio>>> async def main():… print(

dummy_threading– 删除threading模块的替换 源代码: Lib / dummy_threading.py 自版本3.7以后不推荐使用 Python现在总是启用了线程。请使用threading代替 这个模块为threading模块提供了一个重复的界面。当没有提供_thread模块时,它是要导入的一个平台 小心不要使用这个模块,从一个正在创建的线程中发生死锁,阻塞等待创建另一个线程。这通常会在阻塞I / O时发生.